zoukankan      html  css  js  c++  java
  • VB、ASP 数据库操作工具类:DataTool,封装了常用的数据库操作

    虽然现在基本不写VB和ASP了,但感觉这个工具类还是有点意义的!
    注释里添加了方法说明和示例,应该可以很容易看懂
    复制下面的源代码,在VB中,新建模块,粘贴代码,并将模块名称改为:DataTool,保存后即可使用。

    另外,想在VB中使用ADODB,需要引入相应的组件:Microsoft ActiveX Data Object 2.8 Library

      1 '==============================================================================================================================   
      2 '   
      3 '    VB、ASP 数据库操作工具类  DataTool v1.0   
      4 '   
      5 '    @Author : 网无忌   
      6 '    @Email  : netwild@163.com   
      7 '    @Blog   : http://blog.itplus.com.cn   
      8 '   
      9 '    ----------------------------------------------------------------------------------------------------------------------   
     10 '   
     11 '    说明:该工具类封装了对于数据库的常用操作   
     12 '          包括:建立数据库连接、断开数据库连接、查询数据、执行更新四个部分   
     13 '   
     14 '    ----------------------------------------------------------------------------------------------------------------------   
     15 '   
     16 '    方法:   
     17 '   
     18 '      ┌─────────────────┬───────┬────────────────────────────────┐   
     19 '      │  方法名称                        │返回值        │描述
     20 '      ├─────────────────┼───────┼────────────────────────────────┤   
     21 '      │1) DataTool.dbOpen                │Boolean       │建立数据库连接。 
     22 '      │                                  │              │若当前连接已建立,则使用现有连接
     23 '      │                                  │              │否则创建新的连接对象
     24 '      ├─────────────────┼───────┼────────────────────────────────┤   
     25 '      │2) DataTool.dbClose               │无            │关闭数据库连接。
     26 '      │                                  │              │若当前连接已关闭,则直接返回;
     27 '      │                                  │              │否则直接关闭连接,并销毁连接对象,释放内存
     28 '      │                                  │              │※ 建议在窗体注销或页面结束时手动调用该方法,将连接销毁
     29 '      ├─────────────────┼───────┼────────────────────────────────┤   
     30 '      │3) DataTool.find(sql)             │RecordSet     │执行简单的数据库查询操作,游标仅允许向前单向移动,结果集只读
     31 '      ├─────────────────┼───────┼────────────────────────────────┤   
     32 '      │4) DataTool.findDynamic(sql)      │RecordSet     │执行动态的数据库查询操作,游标允许双向移动,结果集只读
     33 '      ├─────────────────┼───────┼────────────────────────────────┤   
     34 '      │5) DataTool.findStatic(sql)       │RecordSet     │执行静态的数据库查询操作,游标允许双向移动,结果集只读
     35 '      ├─────────────────┼───────┼────────────────────────────────┤   
     36 '      │6) DataTool.findAndEdit(sql)      │RecordSet     │执行动态的数据库查询操作,游标允许双向移动,结果集可单条更新
     37 '      ├─────────────────┼───────┼────────────────────────────────┤   
     38 '      │6) DataTool.findAndEditBatch(sql) │RecordSet     │执行动态的数据库查询操作,游标允许双向移动,结果集可批量更新
     39 '      ├─────────────────┼───────┼────────────────────────────────┤   
     40 '      │7) DataTool.execute(sql)          │Boolean       │执行更新操作,例如:Insert、Update、Delete等
     41 '      ├─────────────────┼───────┼────────────────────────────────┤   
     42 '      │8) DataTool.getErr                │String        │返回错误描述信息
     43 '      └─────────────────┴───────┴────────────────────────────────┘   
     44 '   
     45 '    ----------------------------------------------------------------------------------------------------------------------   
     46 '   
     47 '    示例:   
     48 '   
     49 '       1) 简单的检索数据:   
     50 '   
     51 '           Set rs = DataTool.find("select * from tableName")   
     52 '           If rs Is Nothing Then   
     53 '               MsgBox "SQL语句不正确,检索失败!"   
     54 '           Else   
     55 '               MsgBox rs("fieldName")   
     56 '           End If   
     57 '   
     58 '           find方法返回的RecordSet对象支持:MoveNext、MoveLast方法;但不支持:MovePrevious、MoveFirst、recordCount等方法   
     59 '   
     60 '       2) 检索数据,并需要返回总记录数或反向移动游标:   
     61 '   
     62 '           Set rs = DataTool.findDynamic("select * from tableName")   
     63 '           If rs Is Nothing Then   
     64 '               MsgBox "SQL语句不正确,检索失败!"   
     65 '           Else   
     66 '               rs.MoveNext '下一条   
     67 '               rs.MovePrevious '上一条   
     68 '               rs.MoveLast '最后一条   
     69 '               rs.MoveFirst '第一条   
     70 '               MsgBox rs.RecordCount '总记录条数   
     71 '           End If   
     72 '   
     73 '           findDynamic方法返回的RecordSet对象支持:MoveNext、MoveLast、MovePrevious、MoveFirst、recordCount等方法   
     74 '   
     75 '       3) 检索数据,并需要进行修改:   
     76 '   
     77 '           Set rs = DataTool.findAndEdit("select * from tableName")   
     78 '           If rs Is Nothing Then   
     79 '               MsgBox "SQL语句不正确,检索失败!"   
     80 '           Else   
     81 '               rs.AddNew   
     82 '               rs("fieldName") = "新数据"   
     83 '               rs.Update   
     84 '           End If   
     85 '   
     86 '       4) 检索数据,并需要进行批量修改:   
     87 '   
     88 '           Set rs = DataTool.findAndEditBatch("select * from tableName")   
     89 '           If rs Is Nothing Then   
     90 '               MsgBox "SQL语句不正确,检索失败!"   
     91 '           Else   
     92 '               Do Until rs.Eof   
     93 '                   rs("click") = rs("click") + 1   
     94 '                   rs.MoveNext   
     95 '               Loop   
     96 '               rs.UpdateBatch   
     97 '           End If   
     98 '   
     99 '        5) 执行SQL语句直接对数据库进行添加操作   
    100 '   
    101 '           DataTool.execute "insert into table values(1,'新记录')"   
    102 '   
    103 '        6) 执行SQL语句直接对数据库进行修改操作   
    104 '   
    105 '           DataTool.execute "update table set fieldName='更新后的记录' where id=1"   
    106 '   
    107 '        7) 执行SQL语句直接对数据库进行删除操作   
    108 '   
    109 '           DataTool.execute "delete from table where id=1"   
    110 '   
    111 '==============================================================================================================================   
    112   
    113 Dim conn As ADODB.Connection   
    114 Dim ErrDesc As String   
    115 Dim rs, rsad As ADODB.Recordset   
    116   
    117 '函数:打开数据库连接   
    118 '参数:无   
    119 '返回:Boolean 连接数据库成功:true;连接失败:false   
    120 Function dbOpen() As Boolean   
    121     If conn Is Nothing Then   
    122         Set conn = New ADODB.Connection   
    123     End If   
    124     If conn.State Then   
    125         ErrDesc = ""   
    126         dbOpen = True   
    127         Exit Function   
    128     End If   
    129     Dim DataBasePath, DataBaseName, DataBaseUid, DataBasePwd As String   
    130     Dim connStr As String   
    131     '-----------------------------------------------------   
    132     DataBasePath = "192.168.0.1" '数据库服务器地址   
    133     DataBaseName = "myDb" '数据库名称   
    134     DataBaseUid = "sa" '登录名称   
    135     DataBasePwd = "" '登录密码   
    136     '-----------------------------------------------------   
    137     connStr = "provider=SQLOLEDB;Data Source =" & DataBasePath & ";database=" & DataBaseName & ";uid=" & DataBaseUid & ";pwd=" & DataBasePwd   
    138     conn.ConnectionTimeout = 3   
    139     On Error Resume Next   
    140     conn.Open connStr   
    141     If Err Then   
    142         ErrDesc = "数据库连接失败!"   
    143         dbOpen = False   
    144     Else   
    145         ErrDesc = ""   
    146         dbOpen = True   
    147     End If   
    148 End Function   
    149   
    150 '函数:关闭数据库连接   
    151 '参数:无   
    152 '返回:无   
    153 Function dbClose()   
    154     If conn Is Nothing Then Exit Function   
    155     If conn.State = 0 Then Exit Function   
    156     conn.Close   
    157     Set conn = Nothing   
    158 End Function   
    159   
    160 '函数:执行查询(单向游标,只读)   
    161 '参数:strSql String 要执行的SQL字符串   
    162 '返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)   
    163 Function find(ByVal strSql As StringAs ADODB.Recordset   
    164     If Not dbOpen Then Set find = NothingExit Function   
    165     Dim rsTmp As ADODB.Recordset   
    166     On Error Resume Next   
    167     Set rsTmp = conn.execute(strSql)   
    168     If Err Then   
    169         ErrDesc = "检索数据库时发生错误!"   
    170         Set find = Nothing   
    171     Else   
    172         ErrDesc = ""   
    173         Set find = rsTmp   
    174     End If   
    175 End Function   
    176   
    177 '函数:执行查询(动态游标,双向,只读)   
    178 '参数:strSql String 要执行的SQL字符串   
    179 '返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)   
    180 Function findDynamic(ByVal strSql As StringAs ADODB.Recordset   
    181     If Not dbOpen Then Set findDynamic = NothingExit Function   
    182     Dim rsTmp As New ADODB.Recordset   
    183     On Error Resume Next   
    184     rsTmp.Open strSql, conn, 21   
    185     If Err Then   
    186         ErrDesc = "检索数据库时发生错误!"   
    187         Set findDynamic = Nothing   
    188     Else   
    189         ErrDesc = ""   
    190         Set findDynamic = rsTmp   
    191     End If   
    192 End Function   
    193   
    194 '函数:执行查询(静态游标,双向,只读)   
    195 '参数:strSql String 要执行的SQL字符串   
    196 '返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)   
    197 Function findStatic(ByVal strSql As StringAs ADODB.Recordset   
    198     If Not dbOpen Then Set findStatic = NothingExit Function   
    199     Dim rsTmp As New ADODB.Recordset   
    200     On Error Resume Next   
    201     rsTmp.Open strSql, conn, 31   
    202     If Err Then   
    203         ErrDesc = "检索数据库时发生错误!"   
    204         Set findStatic = Nothing   
    205     Else   
    206         ErrDesc = ""   
    207         Set findStatic = rsTmp   
    208     End If   
    209 End Function   
    210   
    211 '函数:执行查询,并允许修改(动态游标,双向,可单条写入)   
    212 '参数:strSql String 要执行的SQL字符串   
    213 '返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)   
    214 Function findAndEdit(ByVal strSql As StringAs ADODB.Recordset   
    215     If Not dbOpen Then Set findAndEdit = NothingExit Function   
    216     Dim rsTmp As New ADODB.Recordset   
    217     On Error Resume Next   
    218     rsTmp.Open strSql, conn, 23   
    219     If Err Then   
    220         ErrDesc = "检索数据库时发生错误!"   
    221         Set findAndEdit = Nothing   
    222     Else   
    223         ErrDesc = ""   
    224         Set findAndEdit = rsTmp   
    225     End If   
    226 End Function   
    227   
    228 '函数:执行查询,并允许修改(动态游标,双向,可批量写入)   
    229 '参数:strSql String 要执行的SQL字符串   
    230 '返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)   
    231 Function findAndEditBatch(ByVal strSql As StringAs ADODB.Recordset   
    232     If Not dbOpen Then Set findAndEditBatch = NothingExit Function   
    233     Dim rsTmp As New ADODB.Recordset   
    234     On Error Resume Next   
    235     rsTmp.Open strSql, conn, 24   
    236     If Err Then   
    237         ErrDesc = "检索数据库时发生错误!"   
    238         Set findAndEditBatch = Nothing   
    239     Else   
    240         ErrDesc = ""   
    241         Set findAndEditBatch = rsTmp   
    242     End If   
    243 End Function   
    244   
    245 '函数:执行更新、删除及插入操作   
    246 '参数:strSql String 要执行的SQL字符串   
    247 '返回:Boolean 执行成功:true;执行失败:false   
    248 Function execute(ByVal strSql As StringAs Boolean   
    249     If Not dbOpen Then execute = FalseExit Function   
    250     On Error Resume Next   
    251     conn.execute strSql   
    252     If Err Then   
    253         ErrDesc = "执行数据库更新时发生错误!"   
    254         execute = False   
    255     Else   
    256         ErrDesc = ""   
    257         execute = True   
    258     End If   
    259 End Function   
    260   
    261 '函数:返回错误描述信息   
    262 '参数:无   
    263 '返回:String   
    264 Function getErr()   
    265     getErr = ErrDesc   
    266 End Function   
    267   


  • 相关阅读:
    JavaScript的函数闭包详细解释
    JavaScript 函数详解
    JavaScript的内置对象(Math对象)
    C#将exe运行程序嵌入到自己的winform窗体中
    C# 获取进程或线程的相关信息
    Easy way to change collation of all database objects in SQL Server
    <?xml version="1.0" encoding="utf-16"?>. use different encoding
    在HTML页面中实现一个简单的Tab
    C# WinForm中将Form显示在Panel中(C#)
    System.InvalidOperationException : 不应有 <Response xmlns=''>。
  • 原文地址:https://www.cnblogs.com/netWild/p/1892344.html
Copyright © 2011-2022 走看看