一个ASP的数据库操作类,意图就是让新手也能写出规范的代码,节少时间。

反正我现在用这个做了很多站,自己觉得还是满有用的,所以拿出来和大家分享一下。

支持三种数据库连接: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

%>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值