首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
ASP | ASP.NET | JSP | PHP | AJAX | XML | Java script | HTML/CSS | 服务器类
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> WEB开发 >> asp学习教程 >> 正文
ASP通用数据库操作类源代码

<%
'==========================================================================
'文件名称:clsDbCtrl.asp
'功  能:数据库操作类
'作  者:coldstone (coldstone[在]qq.com)
'程序版本:v1.0.5
'完成时间:2005.09.23
'修改时间:2007.10.30
'版权声明:可以在任意作品中使用本程序代码,但请保留此版权信息。
'          如果你修改了程序中的代码并得到更好的应用,请发送一份给我,谢谢。
'==========================================================================

Dim a : a = CreatConn(0, "master", "localhost", "sa", "")       'MSSQL数据库
'Dim a : a = CreatConn(1, "Data/%TestDB%.mdb", "", "", "")       'Access数据库
'Dim a : a = CreatConn(1, "E:\MyWeb\Data\%TestDB%.mdb", "", "", "mdbpassword")
Dim Conn
'OpenConn()       '在加载时就建立的默认连接对象Conn,默认使用数据库a
Sub OpenConn : Set Conn = Oc(a) : End Sub
Sub CloseConn : Co(Conn) : End Sub

Function Oc(ByVal Connstr)
       On Error Resume Next
       Dim objConn
       Set objConn = Server.CreateObject("ADODB.Connection")
       objConn.Open Connstr
       If Err.number <> 0 Then
              Response.Write("<div id=""DBError"">数据库服务器端连接错误,请与网站管理员联系。</div>")
              'Response.Write("错误信息:" & Err.Description)
              objConn.Close
              Set objConn = Nothing
              Response.End
       End If
       Set Oc = objConn
End Function

Sub Co(obj)
       On Error Resume Next
       Set obj = Nothing
End Sub

Function CreatConn(ByVal dbType, ByVal strDB, ByVal strServer, ByVal strUid, ByVal strPwd)
       Dim TempStr
       Select Case dbType
              Case "0","MSSQL"
                     TempStr = "driver={sql server};server="&strServer&";uid="&strUid&";pwd="&strPwd&";database="&strDB
              Case "1","ACCESS"
                     Dim tDb : If Instr(strDB,":")>0 Then : tDb = strDB : Else : tDb = Server.MapPath(strDB) : End If
                     TempStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&tDb&";Jet OLEDB:Database Password="&strPwd&";"
              Case "3","MYSQL"
                     TempStr = "Driver={mySQL};Server="&strServer&";Port=3306;Option=131072;Stmt=; Database="&strDB&";Uid="&strUid&";Pwd="&strPwd&";"
              Case "4","ORACLE"
                     TempStr = "Driver={Microsoft ODBC for Oracle};Server="&strServer&";Uid="&strUid&";Pwd="&strPwd&";"
       End Select
       CreatConn = TempStr
End Function


Class dbCtrl
       Private debug
       Private idbConn
       Private idbErr
       
       Private Sub Class_Initialize()
              debug = true                                   '调试模式是否开启
              idbErr = "出现错误:"
              If IsObject(Conn) Then
                     Set idbConn = Conn
              End If
       End Sub
       
       Private Sub Class_Terminate()
              Set idbConn = Nothing
              If debug And idbErr<>"出现错误:" Then Response.Write(idbErr)
       End Sub
       
       Public Property Let dbConn(pdbConn)
              If IsObject(pdbConn) Then
                     Set idbConn = pdbConn
              Else
                     Set idbConn = Conn
              End If
       End Property
       
       Public Property Get dbErr()
              dbErr = idbErr
       End Property
       
       Public Property Get Version
              Version = "ASP Database Ctrl V1.0 By ColdStone"
       End Property

       Public Function AutoID(ByVal TableName)
              On Error Resume Next
              Dim m_No,Sql, m_FirTempNo
              Set m_No=Server.CreateObject("adodb.recordset")
              Sql="SELECT * FROM ["&TableName&"]"
              m_No.Open Sql,idbConn,1,1
              If m_No.EOF Then
                     AutoID=1
              Else
                     Do While Not m_No.EOF
                            m_FirTempNo=m_No.Fields(0).Value
                            m_No.MoveNext
                              If m_No.EOF Then
                                          AutoID=m_FirTempNo+1
                              End If
                     Loop
              End If
              If Err.number <> 0 Then
                     idbErr = idbErr & "无效的查询条件!<br />"
                     If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                     Response.End()
                     Exit Function
              End If
              m_No.close
              Set m_No = Nothing
       End Function

       Public Function GetRecord(ByVal TableName,ByVal FieldsList,ByVal Condition,ByVal OrderField,ByVal ShowN)
              On Error Resume Next
              Dim rstRecordList
              Set rstRecordList=Server.CreateObject("adodb.recordset")
                     With rstRecordList
                     .ActiveConnection = idbConn
                     .CursorType = 1
                     .LockType = 1
                     .Source = wGetRecord(TableName,FieldsList,Condition,OrderField,ShowN)
                     .Open
                     If Err.number <> 0 Then
                            idbErr = idbErr & "无效的查询条件!<br />"
                            If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                            .Close
                            Set rstRecordList = Nothing
                            Response.End()
                            Exit Function
                     End If       
              End With
              Set GetRecord=rstRecordList
       End Function
       
       Public Function wGetRecord(ByVal TableName,ByVal FieldsList,ByVal Condition,ByVal OrderField,ByVal ShowN)
              Dim strSelect
              strSelect="select "
              If ShowN > 0 Then
                     strSelect = strSelect & " top " & ShowN & " "
              End If
              If FieldsList<>"" Then
                     strSelect = strSelect & FieldsList
              Else
                     strSelect = strSelect & " * "
              End If
              strSelect = strSelect & " from [" & TableName & "]"
              If Condition <> "" Then
                     strSelect = strSelect & " where " & ValueToSql(TableName,Condition,1)
              End If
              If OrderField <> "" Then
                     strSelect = strSelect & " order by " & OrderField
              End If
              wGetRecord = strSelect
       End Function

       Public Function GetRecordBySQL(ByVal strSelect)
              On Error Resume Next
              Dim rstRecordList
              Set rstRecordList=Server.CreateObject("adodb.recordset")
                     With rstRecordList
                     .ActiveConnection =idbConn
                     .CursorType = 1
                     .LockType = 1
                     .Source = strSelect
                     .Open
                     If Err.number <> 0 Then
                            idbErr = idbErr & "无效的查询条件!<br />"
                            If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                            .Close
                            Set rstRecordList = Nothing
                            Response.End()
                            Exit Function
                     End If       
              End With
              Set GetRecordBySQL = rstRecordList
       End Function

       Public Function GetRecordDetail(ByVal TableName,ByVal Condition)
              On Error Resume Next
              Dim rstRecordDetail, strSelect
              Set rstRecordDetail=Server.CreateObject("adodb.recordset")
              With rstRecordDetail
                     .ActiveConnection =idbConn
                     strSelect = "select * from [" & TableName & "] where " & ValueToSql(TableName,Condition,1)
                     .CursorType = 1
                     .LockType = 1
                     .Source = strSelect
                     .Open
                     If Err.number <> 0 Then
                            idbErr = idbErr & "无效的查询条件!<br />"
                            If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                            .Close
                            Set rstRecordDetail = Nothing
                            Response.End()
                            Exit Function
                     End If
              End With
              Set GetRecordDetail=rstRecordDetail
       End Function

       Public Function AddRecord(ByVal TableName, ByVal ValueList)
              On Error Resume Next
              DoExecute(wAddRecord(TableName,ValueList))
              If Err.number <> 0 Then
                     idbErr = idbErr & "写入数据库出错!<br />"
                     If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                     'DoExecute "ROLLBACK TRAN Tran_Insert"       '如果存在添加事务(事务滚回)
                     AddRecord = 0
                     Exit Function
              End If
              AddRecord = AutoID(TableName)-1
       End Function
       
       Public Function wAddRecord(ByVal TableName, ByVal ValueList)
              Dim TempSQL, TempFiled, TempValue
              TempFiled = ValueToSql(TableName,ValueList,2)
              TempValue = ValueToSql(TableName,ValueList,3)
              TempSQL = "Insert Into [" & TableName & "] (" & TempFiled & ") Values (" & TempValue & ")"
              wAddRecord = TempSQL
       End Function

       Public Function UpdateRecord(ByVal TableName,ByVal Condition,ByVal ValueList)
              On Error Resume Next
              DoExecute(wUpdateRecord(TableName,Condition,ValueList))
              If Err.number <> 0 Then
                     idbErr = idbErr & "更新数据库出错!<br />"
                     If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                     'DoExecute "ROLLBACK TRAN Tran_Update"       '如果存在添加事务(事务滚回)
                     UpdateRecord = 0
                     Exit Function
              End If
              UpdateRecord = 1
       End Function

       Public Function wUpdateRecord(ByVal TableName,ByVal Condition,ByVal ValueList)
              Dim TmpSQL
              TmpSQL = "Update ["&TableName&"] Set "
              TmpSQL = TmpSQL & ValueToSql(TableName,ValueList,0)
              TmpSQL = TmpSQL & " Where " & ValueToSql(TableName,Condition,1)
              wUpdateRecord = TmpSQL
       End Function

       Public Function DeleteRecord(ByVal TableName,ByVal IDFieldName,ByVal IDValues)
              On Error Resume Next
              Dim Sql
              Sql = "Delete From ["&TableName&"] Where ["&IDFieldName&"] In ("
              If IsArray(IDValues) Then
                     Sql = Sql & "Select ["&IDFieldName&"] From ["&TableName&"] Where " & ValueToSql(TableName,IDValues,1)
              Else
                     Sql = Sql & IDValues
              End If
              Sql = Sql & ")"
              DoExecute(Sql)
              If Err.number <> 0 Then
                     idbErr = idbErr & "删除数据出错!<br />"
                     If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                     'DoExecute "ROLLBACK TRAN Tran_Delete"       '如果存在添加事务(事务滚回)
                     DeleteRecord = 0
                     Exit Function
              End If
              DeleteRecord = 1
       End Function
       
       Public Function wDeleteRecord(ByVal TableName,ByVal IDFieldName,ByVal IDValues)
              On Error Resume Next
              Dim Sql
              Sql = "Delete From ["&TableName&"] Where ["&IDFieldName&"] In ("
              If IsArray(IDValues) Then
                     Sql = Sql & "Select ["&IDFieldName&"] From ["&TableName&"] Where " & ValueToSql(TableName,IDValues,1)
              Else
                     Sql = Sql & IDValues
              End If
              Sql = Sql & ")"
              wDeleteRecord = Sql
       End Function

       Public Function ReadTable(ByVal TableName,ByVal Condition,ByVal GetFieldNames)
              On Error Resume Next
              Dim rstGetValue,Sql,BaseCondition,arrTemp,arrStr,TempStr,i
              TempStr = "" : arrStr = ""
              '给出SQL条件语句
              BaseCondition = ValueToSql(TableName,Condition,1)
              '读取数据
              Set rstGetValue = Server.CreateObject("ADODB.Recordset")
              Sql = "Select "&GetFieldNames&" From ["&TableName&"] Where "&BaseCondition
              rstGetValue.Open Sql,idbConn,1,1
              If rstGetValue.RecordCount > 0 Then
                     If Instr(GetFieldNames,",")>0 Then
                            arrTemp = Split(GetFieldNames,",")
                            For i = 0 To Ubound(arrTemp)
                                   If i<>0 Then arrStr = arrStr &Chr(112)&Chr(112)&Chr(113)
                                   arrStr = arrStr & rstGetValue.Fields(i).Value
                            Next
                            TempStr = Split(arrStr,Chr(112)&Chr(112)&Chr(113))
                     Else
                            TempStr = rstGetValue.Fields(0).Value
                     End If
              End If
              If Err.number <> 0 Then
                     idbErr = idbErr & "获取数据出错!<br />"
                     If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                     rstGetValue.close()
                     Set rstGetValue = Nothing
                     Exit Function
              End If
              rstGetValue.close()
              Set rstGetValue = Nothing
              ReadTable = TempStr
       End Function

       Public Function C(ByVal ObjRs)
              ObjRs.close()
              Set ObjRs = Nothing
       End Function
       
       Private Function ValueToSql(ByVal TableName, ByVal ValueList, ByVal sType)
              Dim StrTemp
              StrTemp = ValueList
              If IsArray(ValueList) Then
                     StrTemp = ""
                     Dim rsTemp, CurrentField, CurrentValue, i
                     Set rsTemp = Server.CreateObject("adodb.recordset")
                     With rsTemp
                            .ActiveConnection = idbConn
                            .CursorType = 1
                            .LockType = 1
                            .Source ="select * from [" & TableName & "] where 1 = -1"
                            .Open
                            For i = 0 to Ubound(ValueList)
                                   CurrentField = Left(ValueList(i),Instr(ValueList(i),":")-1)
                                   CurrentValue = Mid(ValueList(i),Instr(ValueList(i),":")+1)
                                   If i <> 0 Then
                                          Select Case sType
                                                 Case 1
                                                        StrTemp = StrTemp & " And "
                                                 Case Else
                                                        StrTemp = StrTemp & ", "
                                          End Select
                                   End If
                                   If sType = 2 Then
                                          StrTemp = StrTemp & "[" & CurrentField & "]"
                                   Else
                                          Select Case .Fields(CurrentField).Type
                                                 Case 7,133,134,135,8,129,200,201,202,203
                                                        If sType = 3 Then
                                                               StrTemp = StrTemp & "'"&CurrentValue&"'"
                                                        Else
                                                               StrTemp = StrTemp & "[" & CurrentField & "] = '"&CurrentValue&"'"
                                                        End If
                                                 Case 11
                                                        If UCase(cstr(Trim(CurrentValue)))="TRUE" Then
                                                               If sType = 3 Then
                                                                      StrTemp = StrTemp & "1"
                                                               Else
                                                                      StrTemp = StrTemp & "[" & CurrentField & "] = 1"
                                                               End If
                                                        Else
                                                               If sType = 3 Then
                                                                      StrTemp = StrTemp & "0"
                                                               Else
                                                                      StrTemp = StrTemp & "[" & CurrentField & "] = 0"
                                                               End If
                                                        End If
                                                 Case Else
                                                        If sType = 3 Then
                                                               StrTemp = StrTemp & CurrentValue
                                                        Else
                                                               StrTemp = StrTemp & "[" & CurrentField & "] = " & CurrentValue
                                                        End If
                                          End Select
                                   End If
                            Next
                     End With
                     If Err.number <> 0 Then
                            idbErr = idbErr & "生成SQL语句出错!<br />"
                            If debug Then idbErr = idbErr & "错误信息:"& Err.Description
                            rsTemp.close()
                            Set rsTemp = Nothing
                            Exit Function
                     End If
                     rsTemp.Close()
                     Set rsTemp = Nothing
              End If
              ValueToSql = StrTemp
       End Function

       Private Function DoExecute(ByVal sql)
              Dim ExecuteCmd
              Set ExecuteCmd = Server.CreateObject("ADODB.Command")
              With ExecuteCmd
                     .ActiveConnection = idbConn
                     .CommandText = sql
                     .Execute
              End With
              Set ExecuteCmd = Nothing
       End Function
End Class
%>
中国IT教育热线咨询
相关文章
ASP求平均分源码示例
ASP如何查询ACCESS数据库中上一周的所有记录
asp根据表单自动生成sql语句的函数
ASP连接11种数据库的语法总结
教你优化你的ASP程序
最新文章
·ASP通用数据库操作类源代码
·ASP求平均分源码示例
·ASP如何查询ACCESS数据库中上一周
·PHP正则表达式从url中取得域名
·php设计模式介绍之迭代器模式
 文章评论

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
ASP.NET ASP PHP JSP
·如何使dbgrid中不同的值显示不同颜色08-03
·extjs ComboBox联动下拉菜单示例08-01
·漫谈.Net开发关于命名空间和目录划分07-31
·在Silverlight应用程序中操作Cookie07-28
·带附加条件的NewID()用法(downmoon)07-28
·对自定义路由进行单元测试07-28
·javascript实现yield07-28
·在ASP.NET中使用Google Maps07-28
·Sql Server2005 实现Oracle10g的hash表分区功07-28
·asp.net get set用法07-26
·Asp.net 控件开发—数据回传07-26
·ASP通用数据库操作类源代码08-05
·ASP求平均分源码示例08-05
·ASP如何查询ACCESS数据库中上一周的所有记录08-05
·php设计模式介绍之迭代器模式08-02
·简单学习php遇到的主要问题08-02
·asp根据表单自动生成sql语句的函数08-02
·教你优化你的ASP程序03-07
·asp去除HTML标记的三个实用函数03-07
·ASP添加验证码的解决方法03-07
·ASP通用文章分页函数:非记录集分页03-07
·ASP教程基础:十天学会ASP第三天03-07
·Linux系统下让PHP提高性能的工具APC05-06
·一个完整、安全的PHP用户登录系统11-14
·Apache+PHP+MySQL建立数据库驱动的动态网站08-24
·用SSH与PHP相连接 确保数据传输的安全性08-23
·PHP5手动最简安装方法08-03
·PHP程序加速探索之服务器负载测试07-11
·完全讲解PHP+MySQL的分页显示示例分析05-30
·用Suhosin加强PHP脚本语言安全性05-26
·初学入门 PHP 和 MySQL05-17
·传奇的诞生 PHP三位创始人简介05-10
·大型系统上PHP令人不爽的九大原因05-10
·ASP.NET和PHP、JSP究竟学哪个?07-30
·JAVA (Jsp)利用Google的Translate开发API07-29
·由Servlet获得FacesContext及ManagedBeans07-24
·用JOTM向Servlet中添加事务07-18
·用servlet生成验证码07-16
·JSP/Servlet伪静态网页实现07-08
·JSP和Servlet的关系浅谈06-15
·妙用异步Servlet扩展AJAX应用程序06-11
·servlet生成验证码图片06-02
·java.servlet.Filter的应用05-30
·Java程序员必看--扩展鼠标右键菜单功能05-13
  培训中心
人才交流中心 技术交流中心
  ITLab技术交流平台: