当前位置: 首页 > 图文教程 > 网络编程 > ASP > 发一个ASP的ADODB类代码

ASP
asp分页(自己整理的2个分页程序)
ASP常用的系统配置函数
雨哲防采集策略之列表篇
雨哲浅谈关于防采集而不影响收录内容篇
asp数据库连接函数
ajax XMLHTTP Post Form时的表单乱码综合解决
ASP注入详细命令40条
用ASP实现MSSQL用户密码破解
ASP创建对象的两种方法比较
ASP字符串转换为整形、双精度型、布尔
ASP计算str2在str1中出现的次数
asp采集抓取网上房产信息的代码
ASP注册登陆实例代码
ASP中使用FileSystemObject时提高性能的方法
分享一个好东东,动态Include文件 (Dynamic File Includes)
解决 JScript 中使用日期类型数据时出现类型错误的问题
在ASP里面创建GUID
在JScript中使用缓存技术的实际代码
ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
海阳2006+功能中的潜水王

发一个ASP的ADODB类代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 86 ::
收藏到网摘: n/a

反正我现在用这个做了很多站,自己觉得还是满有用的,所以拿出来和大家分享一下。支持三种数据库连接:MSSQL2000,MSSQL2005,ACCESS
三种方法:
select_table(sql)
表查询,返回TRUE或FALSE
当SQL语句出错,或空记录时返回FALSE,否则TRUE
update_table(SQL)
表更新,包括update,delete
成功执行返回TRUE,否则返回FALSE,updated为执行后影响记录行数。
insert_table(sql,table,id_column)
table为表名,id_column为表中自动编号,自增字段。
当成功执行返回TRUE,否则返回FALSE,指定TABLE,ID_column后,将返回最后添加记录所产生的自增ID。
select_table()相关方法Select_page(page,psize)
分页处理,page为当前页,psize为每页记录行数。
所有操作时,自动检测数据库链接和RS是否打开,执行后将自动关闭数据库链接。
示例:
set db = new adodb_class
if db.select_table("select * from news order by id desc") then
page = request("page")
Select_page(page,20)'每页20条
for i=1 to 20
response.write db.rs("title")'类内置rs,不可变
db.rs.movenext
if db.rs.eof then exit for
next
end if
db.rsPage = 总页数,db.nowPage= 经过处理后当前页,db.rsCounts数总记录数量。
if db.update_table("delete from news where ispass=1") then'update同样
response.write "共删除"&db.updated&"行"
end if
call db.insert_table("insert into news (title,content) values ('"&title&"','"&content&"')","news","id")
response.write "最后添加ID为"&db.Insertd
在页面最尾可输出db.readCounts 为查询数据库次数。
--------------------------------------------
本类好处就是你不必担心忘记关闭数据库链接,不用频繁set rs = server.recordset("adodb.recordset"),也不用set rs = nothing
缺点就是翻页用的传统方式。rs.absolutepage = rs.pagesize
----------------------------------------------------------
<%
'/******kshop******/
' adodb_class.asp 数据库操作类
' Version 1.0
' Copyright [email][email protected][/email]
' E-mail [email][email protected][/email]
'/*****************/
class adodb_class
dim conn,connstr,rs
dim dbclass'数据库类型access,sql2000,sql2005三个值之一
dim SqlDbName,SqlUser,SqlPass,SqlServer
dim SqlAccess
dim Selectd,Insertd,Updated
dim rsCounts,rsPage,readCounts,nowPage '记录集 总数/页数 查询次数
Private Sub Class_Initialize()
SqlDbName = ""
SqlUser = ""
SqlPass = ""
SqlServer = ""
SqlAccess = "/simple_date/simple_xiehui.mdb"
rsCounts = 0:rsPage = 1:readCounts = 0:nowPage = 1
Call OpenConn("access")
selectd = 0
Insertd = 0
Updated = 0
End Sub
'********打开数据库链接******************
Private Sub AccessConn()
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath(SqlAccess) &";Persist Security Info=False"
End Sub
Private Sub Sql2kConn()
connstr = "driver={SQL server};server="&SqlServer&";uid="&SqlUser&";pwd="&SqlPass&";database="&SqlDbName
End Sub
Private Sub Sql2k05Conn()
connstr="Provider=SQLNCLI.1;Password="&SqlPass&";User ID="&SqlUser&";Initial Catalog="&SqlDbName&";Data Source="&SqlServer
End Sub
Private Sub OpenConn(db_class)
dbclass = db_class
select case db_class
case "access":call AccessConn()
case "sql2000":call Sql2kConn()
case "sql2005":call Sql2k05Conn()
end select
on error resume next
set conn = server.CreateObject("adodb.Connection")
conn.open connstr
if err then
Response.write "数据库链接失败<br>sqlstring = " + connstr
Response.End()
err.clear
end if
End Sub
'**********结束/查询构造*************
Public Function Select_Table(sql)
if not not isempty(conn) or isnull(conn) then
call OpenConn(dbclass)
elseif conn.state = 0 then
call OpenConn(dbclass)
end if
on error resume next
Set rs = Server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
if err then
Select_Table = False
rs.close
exit Function
err.clear
End If
If rs.eof and rs.bof then
rs.close
Select_Table = false
Else
Select_Table = true
End If
readCounts = readCounts + 1
End Function
'分页处理
Public Function Select_page(page,psize)
if isnull(page) or page = "" then page = 1
if page < 1 then page = 1
if rs.state = 1 then
if not rs.eof then
rs.pagesize = psize
rsPage = rs.pagecount
rsCounts = rs.recordcount
if int(page) > Int(rsPage) then page = rsPage
rs.absolutepage = page:nowPage = page
end if
end if
End Function
'更新记录
Public Function Update_Table(Sql)
if not isempty(conn) or isnull(conn) then
call OpenConn(dbclass)
elseif conn.state = 0 then
call OpenConn(dbclass)
end if
on error resume next
if Sql <> "" then
conn.Execute Sql,Updated
if err then
Update_Table = false
err.clear
else
Update_Table = true
end if
Else
Update_Table = false
end if
conn.close
Set conn = nothing
End Function
'增加
'输入:insert SQL语句,表名,自增字段
Public Function Insert_Table(sql,table,id_column)
if not isempty(conn) or isnull(conn) then
call OpenConn(dbclass)
elseif conn.state = 0 then
call OpenConn(dbclass)
end if
on error resume next
if sql <> "" then
conn.Execute(sql)
if err then
Insert_Table = false:err.clear
else
Insert_Table = true
end if
'获得最后增加ID
if table <> "" and id_column <> "" then
Set ds = conn.Execute("select "&id_column&" from "&table&" order by "&id_column&" desc")
end if
if err then
Insertd = 0:err.clear
else Insertd = ds(0)
end if
Set ds = nothing
closed()
else
Insert_Table = false
end if
End Function
'关闭数据库链接
Public Function closed()
if not isempty(rs) and not isnull(rs) then
if rs.state = 1 then
rs.close
end if
end if
rsCounts = 0:rsPage = 1:nowPage = 1
end function
'**********释放类************
Private Sub Class_Terminate()
readCounts = 0:rsCounts = 0:rsPage = 0
if not isempty(conn) and not isnull(conn) then
if conn.state = 1 then
conn.close
end if
Set conn = nothing
end if
if not isempty(rs) then
if not isnull(rs) then
if rs.state=1 then
rs.close
end if
set rs=nothing
end if
end if
End Sub
End Class
%>