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

106 '

107 ' 7) 执行SQL语句直接对数据库进行删除操作

108 '

109 ' DataTool.execute "delete from table where

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 & ";u;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 String) As ADODB.Recordset

164 If Not dbOpen Then Set find = Nothing: Exit 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 String) As ADODB.Recordset

181 If Not dbOpen Then Set findDynamic = Nothing: Exit Function

182 Dim rsTmp As New ADODB.Recordset

183 On Error Resume Next

184 rsTmp.Open strSql, conn, 2, 1

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 String) As ADODB.Recordset

198 If Not dbOpen Then Set findStatic = Nothing: Exit Function

199 Dim rsTmp As New ADODB.Recordset

200 On Error Resume Next

201 rsTmp.Open strSql, conn, 3, 1

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 String) As ADODB.Recordset

215 If Not dbOpen Then Set findAndEdit = Nothing: Exit Function

216 Dim rsTmp As New ADODB.Recordset

217 On Error Resume Next

218 rsTmp.Open strSql, conn, 2, 3

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 String) As ADODB.Recordset

232 If Not dbOpen Then Set findAndEditBatch = Nothing: Exit Function

233 Dim rsTmp As New ADODB.Recordset

234 On Error Resume Next

235 rsTmp.Open strSql, conn, 2, 4

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 String) As Boolean

249 If Not dbOpen Then execute = False: Exit 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