本文主要是介绍【学生信息管理系统】模块代码的理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
学生信息管理系统中,最难理解的代码就是模块中的,理解了模块中的一些代码,学生信息管理系统基本上就掌握了,剩下的窗体中的代码都是重复的。模块中的代码又以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" '返回查询信息ElseSet rst = New ADODB.Recordset '创建数据集对象rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic Set ExecuteSQL = rstMsgString = "查询到" & rst.RecordCount & "条记录"End IfExecuteSQL_Exit:Set rst = Nothing '清空数据集对象Set cnn = Nothing '中断连接Exit Function
ExecuteSQL_Error: '错误类型判断。MsgString = "查询错误:" & Err.DescriptionResume 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
参数说明:
- Source可选。Variant,计算有效的 Command 对象、SQL 语句、表名、存储过程调用、URL 或包含持久存储的 Recordset 的文件或 Stream对象的名称。
- ActiveConnection可选。Variant 或 String,Variant 用于计算有效的 Connection 对象变量的名称;String 包含ConnectionString 参数。
- CursorType可选。CursorTypeEnum 值,确定当打开 Recordset 时提供者应使用的游标类型。默认值为 adOpenForwardOnly。
- LockType可选。LockTypeEnum 值,确定打开 Recordset 时提供者应使用的锁定类型(并发)。默认值为 adLockReadOnly。
- Options可选。Long 值,指示如果 Source 参数表示的不是 Command 对象,提供者应如何计算该参数;或者指示应从先前保存 Recordset的文件中恢复 Recordset。可以是一个或者多个 CommandTypeEnum 或 ExecuteOptionEnum 值。
其中:
1、CursorType参数的取值:
- adOpenDynamic-使用动态游标。其他用户所作的添加、更改或删除均可见,而且允许Recordset 中的所有移动类型(如果提供者不支持书签,则书签除外)。
- adOpenForwardOnly-默认值。使用仅向前游标。除了在记录中只能向前滚动外,与静态游标相同。当只需要在Recordset 中进行一个传递时,用它可提高性能。
- adOpenKeyset-使用键集游标。尽管从您的Recordset 不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,它和动态游标相似。其他用户所作的数据更改依然可见。
- adOpenStatic-使用静态游标。一组记录的静态副本,可用于查找数据或生成报告。其他用户所作的添加、更改或删除不可见。
- adOpenUnspecified-不指定游标类型。
2、LockType参数的取值:
- adLockBatchOptimistic-指示开放式批更新。需要批更新模式。
- adLockOptimistic-指示逐个记录开放式锁定。提供者使用开放式锁定,仅在调用Update 方法时锁定记录。
- adLockPessimistic-指示逐个记录保守式锁定。提供者要确保记录编辑成功,通常在编辑之后立即在数据源锁定记录。
- adLockReadOnly-指示只读记录。无法改变数据。
- adLockUnspecified-未指定锁定类型。创建副本时,副本与源对象使用相同的锁定类型。
这篇关于【学生信息管理系统】模块代码的理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!