学生信息管理系统中,最难理解的代码就是模块中的,理解了模块中的一些代码,学生信息管理系统基本上就掌握了,剩下的窗体中的代码都是重复的。模块中的代码又以ExecuteSQL函数最费解。
<span style="font-size:14px;">Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset '参数SQL传递查询语句,MsgString传递查询信息 Dim cnn As ADODB.Connection '定义连接 Dim rst As ADODB.Recordset '定义记录集 Dim sTokens() As String '定义字符串 On Error GoTo ExecuteSQL_Error '异常处理 sTokens = Split(SQL) '用Split函数产生一个包含各个子串的数组 Set cnn = New ADODB.Connection '创建连接 cnn.Open ConnectString '打开连接 If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '判断字符串中是否含有指定内容。 cnn.Execute SQL '执行SQL语句 MsgString = sTokens(0) & "query successful" '返回查询信息 Else Set rst = New ADODB.Recordset '创建数据集对象 rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic Set ExecuteSQL = rst 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</span><span style="color: red; font-family: Calibri;font-size:18px;"> </span>
sTokens = Split(SQL)Split 函数:返回一个下标从零开始的一维数组,它包含指定数目的子字符串。
写一句SQL语句:"select *from student_Info"
执行sTokens=Split(SQL)
sTokens(0)="select"
sTokens(1)="*"
sTokens(2)="from"
sTokens(3)="student_Info"
这样就把一个查询语句拆分成了一个数组
<span style="color: rgb(255, 0, 0); font-family: 宋体; font-size: 18px;">If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then</span>
Instr函数:返回 Variant (Long)
InStr([start, ]string1, string2[, compare]),下标从1开始,返回指定一字符串在另一字符串中最先出现的位置。在字符串string1中,从start开始找string2,省略start时,从string1头开始找。找不到时,函数值为0。
Ucase$函数:返回 Variant(String),其中包含转成大写的字符串。只有小写的字母会转成大写;原本大写或非字母之字符保持不变。
Execute 方法:运行动作查询或执行 SQL 语句,它们都不返回行。
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
语法格式:
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
参数说明:
其中:
1、CursorType参数的取值:
2、LockType参数的取值: