服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - ASP教程 - 发一个ASP的ADODB类代码

发一个ASP的ADODB类代码

2019-10-07 11:03asp代码网 ASP教程

反正我现在用这个做了很多站,自己觉得还是满有用的,所以拿出来和大家分享一下。支持三种数据库连接:MSSQL2000,MSSQL2005,ACCESS

反正我现在用这个做了很多站,自己觉得还是满有用的,所以拿出来和大家分享一下。支持三种数据库连接: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]simple_1982@hotmail.com[/email] 
'        E-mail                [email]xsg2005@163.com[/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 
%>

延伸 · 阅读

精彩推荐