Public Function Executesql(ByVal sql As String, Msgstring As String) As ADODB.Recordset
Dim cnn As ADODB.Connection '定义cnn 为数据库的连接形式,配合cnnectstring() 函数连接并打开数据库 cnnectstring的函数下面会有介绍
Dim rst As ADODB.Recordset '定义一个临时列表,存放从数据库中取出的数据
Dim sTokens() As String '定义一个数组,将sql语句按数组的形式存放
On Error GoTo Executesql_error '如果出错,进行的应急处理
sTokens = Split(sql) '通过split函数将sql 语句按单词存入数组,例:如果sql语句是 select * from student ,那么运行的结果就是——stokens(0)= "select",stokents(1)="*" ,stokens(2)="from",stokens(3)="student"
Set cnn = New ADODB.Connection '将cnn实例化
cnn.Open ConnectString '通过connectstring将数据库连接,并且打开
If InStr("INSERT,DELET,UPDATE", UCase$(sTokens(0))) Then '判断是否通过select语句进行查询操作
cnn.Execute sql<span style="white-space:pre"> </span>'直接执行操作,不返回操作结果。
Msgstring = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset '临时列表的实例化
rst.Open Trim$(sql), cnn, adOpenKeyset, adLockOptimistic 'rst打开,trim&()中保存的是要进行的操作字符串;cnn是字符串表达式,登录的 ODBC 数据源的名称,打开方式。;dOpenKeyset ,确定游标类型(即查找的方式) 为使用键集游标。不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,它和动态游标相似。其他用户所做的数据更改依然可见;adlockoptimistic,当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
Set Executesql = rst '将得到的临时列表赋值给executesql函数,尤它传回并进一步赋值给mrc
Msgstring = "查询到" & rst.RecordCount & "条记录"
End If
Executesql_exit: '函数退出前的一个清空临时列表的操作。
Set rst = Nothing
Set cnn = Nothing
Exit Function
Executesql_error: '错误标识,错误出现时的处理
Msgstring = "查询错误:" & _
Err.Description
Resume Executesql_exit
End Function
《ConnectString ()函数的介绍》