说明:
在《数据库系统开发实例导航》中,对涉及的学生管理系统可谓是精而之精,学习此书中的内容我感觉到了充实……当然在学习此书的过程中遇到了困难也是不言而喻了,尤其是对代码的理解。接下来,就对学生管理系统中主窗体的创建的部分代码做详细的理解介绍(“rem:”在VB中为注释的意思):
此部分代码是原书中提到由于系统中各个功能模块都将频繁使用数据库中的各种数据,因此需要一个公共的数据操作函数,用以执行各种SQL语句。添加函数Execute SQL。到这里为对函数ExecuteSQL的代码的介绍:
代码解释:
Rem:传递参数SQL传递查询语句,msgstring传递查询信息
询信息Public Function ExecuteSQL(ByVal sql As String, msgstring As String) As ADODB.Recordset
Rem:定义一个名为“cnn”的数据库的连接,并配合connectstring()函数链接打开数据库
Dim cnn As ADODB.connection
Rem:定义一个名为“rst”的记录集来存放数据库中取出的数据源
Dim rst As ADODB.Recordset
Rem:定义一个名为“stokens()”的字符串数组,将SQL语句按数组的形式存放,在程序中要使用变量,这些是数组变量,要先定义
Dim stokens() As String
Rem:如果代码的运行出错,将跳转到executesql语句处继续执行
On Error GoTo executesql_error
Rem:用Split函数产生一个包含各个字符串的数组
Rem:通过split函数将sql 语句按单词存入数组,
Rem:例:如果sql语句是 select * from student ,
Rem:那么运行的结果就是——stokens(0)= "select",stokents(1)="*" ,stokens(2)="from",stokens(3)="student" )
stokens = Split(sql)
Rem:创建连接
Set cnn = New ADODB.connection
Rem:通过connectstring将数据库链接,并且打开
cnn.open connectstring
Rem:判断字符串中是否含有指定内容
Rem:Ucase是将小写字母转换为大写字母,而“$”为字符串的意思
Rem:此语句是从数组中选择“insert,delete,update”其一并作为序列为零
If InStr("insert,delete,update", UCase$(stokens(0))) Then
Rem:执行查询语句
cnn.execute sql
Rem:返回查询信息
msgstring = stokens(0) & "query successful"
Else
Rem:创建数据集对象
Set rst = New ADODB.Recordset
Rem:返回查询结果
rst.open Trim$(sql), cnn, adopenkeyset, adlockoptimistic
Rem:返回记录集对象
Set ExecuteSQL = rst
msgstring = "查询到" & rst.recordcount & " 条记录"
End If
executesql_exit:
Rem:清空数据集对象
Set rst = Nothing
Rem:中断连接
Set cnn = Nothing
Exit Function
Rem:错误类型判断
executesql_error:
msgstring = "查询错误" & Err.Description
Resume executesql_exit
End Function
这部分代码的理解,有的是我通过网络查找而来,有的是向他人请教而来,有的是从书上对比而来,总之耗费掉了很长的时间,希望能对大家理解学习这部分内容时有更多的帮助!!!