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   


原文地址:https://www.cnblogs.com/netWild/p/1892344.html