您的位置:首页 > 数据库

VB、ASP 数据库操作工具类:DataTool,封装了常用的数据库操作

2010-11-30 19:47 399 查看
虽然现在基本不写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语句直接对数据库进行添加操作
'
' DataTool.execute "insert into table values(1,'新记录')"
'
' 6) 执行SQL语句直接对数据库进行修改操作
'
' DataTool.execute "update table set fieldName='更新后的记录' where id=1"
'
' 7) 执行SQL语句直接对数据库进行删除操作
'
' DataTool.execute "delete from table where id=1"
'
'==============================================================================================================================

Dim conn As ADODB.Connection
Dim ErrDesc As String
Dim rs, rsad As ADODB.Recordset

'函数:打开数据库连接
'参数:无
'返回:Boolean 连接数据库成功:true;连接失败:false
Function dbOpen() As Boolean
If conn Is Nothing Then
Set conn = New ADODB.Connection
End If
If conn.State Then
ErrDesc = ""
dbOpen = True
Exit Function
End If
Dim DataBasePath, DataBaseName, DataBaseUid, DataBasePwd As String
Dim connStr As String
'-----------------------------------------------------
DataBasePath = "192.168.0.1" '数据库服务器地址
DataBaseName = "myDb" '数据库名称
DataBaseUid = "sa" '登录名称
DataBasePwd = "" '登录密码
'-----------------------------------------------------
connStr = "provider=SQLOLEDB;Data Source =" & DataBasePath & ";database=" & DataBaseName & ";uid=" & DataBaseUid & ";pwd=" & DataBasePwd
conn.ConnectionTimeout = 3
On Error Resume Next
conn.Open connStr
If Err Then
ErrDesc = "数据库连接失败!"
dbOpen = False
Else
ErrDesc = ""
dbOpen = True
End If
End Function

'函数:关闭数据库连接
'参数:无
'返回:无
Function dbClose()
If conn Is Nothing Then Exit Function
If conn.State = 0 Then Exit Function
conn.Close
Set conn = Nothing
End Function

'函数:执行查询(单向游标,只读)
'参数:strSql String 要执行的SQL字符串
'返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)
Function find(ByVal strSql As String) As ADODB.Recordset
If Not dbOpen Then Set find = Nothing: Exit Function
Dim rsTmp As ADODB.Recordset
On Error Resume Next
Set rsTmp = conn.execute(strSql)
If Err Then
ErrDesc = "检索数据库时发生错误!"
Set find = Nothing
Else
ErrDesc = ""
Set find = rsTmp
End If
End Function

'函数:执行查询(动态游标,双向,只读)
'参数:strSql String 要执行的SQL字符串
'返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)
Function findDynamic(ByVal strSql As String) As ADODB.Recordset
If Not dbOpen Then Set findDynamic = Nothing: Exit Function
Dim rsTmp As New ADODB.Recordset
On Error Resume Next
rsTmp.Open strSql, conn, 2, 1
If Err Then
ErrDesc = "检索数据库时发生错误!"
Set findDynamic = Nothing
Else
ErrDesc = ""
Set findDynamic = rsTmp
End If
End Function

'函数:执行查询(静态游标,双向,只读)
'参数:strSql String 要执行的SQL字符串
'返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)
Function findStatic(ByVal strSql As String) As ADODB.Recordset
If Not dbOpen Then Set findStatic = Nothing: Exit Function
Dim rsTmp As New ADODB.Recordset
On Error Resume Next
rsTmp.Open strSql, conn, 3, 1
If Err Then
ErrDesc = "检索数据库时发生错误!"
Set findStatic = Nothing
Else
ErrDesc = ""
Set findStatic = rsTmp
End If
End Function

'函数:执行查询,并允许修改(动态游标,双向,可单条写入)
'参数:strSql String 要执行的SQL字符串
'返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)
Function findAndEdit(ByVal strSql As String) As ADODB.Recordset
If Not dbOpen Then Set findAndEdit = Nothing: Exit Function
Dim rsTmp As New ADODB.Recordset
On Error Resume Next
rsTmp.Open strSql, conn, 2, 3
If Err Then
ErrDesc = "检索数据库时发生错误!"
Set findAndEdit = Nothing
Else
ErrDesc = ""
Set findAndEdit = rsTmp
End If
End Function

'函数:执行查询,并允许修改(动态游标,双向,可批量写入)
'参数:strSql String 要执行的SQL字符串
'返回:RecordSet 或 Nothing(数据库连接失败、SQL语句有错误时)
Function findAndEditBatch(ByVal strSql As String) As ADODB.Recordset
If Not dbOpen Then Set findAndEditBatch = Nothing: Exit Function
Dim rsTmp As New ADODB.Recordset
On Error Resume Next
rsTmp.Open strSql, conn, 2, 4
If Err Then
ErrDesc = "检索数据库时发生错误!"
Set findAndEditBatch = Nothing
Else
ErrDesc = ""
Set findAndEditBatch = rsTmp
End If
End Function

'函数:执行更新、删除及插入操作
'参数:strSql String 要执行的SQL字符串
'返回:Boolean 执行成功:true;执行失败:false
Function execute(ByVal strSql As String) As Boolean
If Not dbOpen Then execute = False: Exit Function
On Error Resume Next
conn.execute strSql
If Err Then
ErrDesc = "执行数据库更新时发生错误!"
execute = False
Else
ErrDesc = ""
execute = True
End If
End Function

'函数:返回错误描述信息
'参数:无
'返回:String
Function getErr()
getErr = ErrDesc
End Function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: