学生信息管理系统问题(二)
2013-07-27 17:34
381 查看
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset 'executes SQL and returns Recordset Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sTokens() As String On Error GoTo ExecuteSQL_Error sTokens = Split(SQL) Set cnn = New ADODB.Connection cnn.Open ConnectString If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '非Select语句 cnn.Execute SQL '数据量不大时,可以在连接上,直接执行SQL语句 MsgString = sTokens(0) & " query successful" '虽然MsgString不是返回值,但传递方式是ByRef,实参地址和这个地址相同 Else 'Select语句 Set rst = New ADODB.Recordset rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic '得到临时表,游标指向第一条记录 'get RecordCount, 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
1.这是一个自定义的函数过程,用来执行SQL语句。
2.这里用到了Split()函数来将某个SQL语句的长字符串存储到一个下标从零开始的一维数组中。
Split(expression[, delimiter[, count[, compare]]])
expression
是原始字符串
delimiter
用于标识子字符串边界的字符串字符,用作分隔符。如果忽略,则使 用空格字符("")作为分隔符。
count
要返回的子字符串数。
代码中Split(SQL)就是将一个SQL语句以空格字符为分隔符分成一个一个的元素存储到
数组中,并将这个数组赋给sTokens()这个数组变量。
3.条件句中先判断sTokens(0)该元素是否在“Insert,Delete,Update”,如果
在,则直接执行SQL语句,该过程通过InStr()函数来进行,其用法
不在这里叙述。
4.如果不在,则创建一个记录集,将ExecuteSQL函数的返回值存到该记录集里。
5.Recordset对象.Open Source,ActiveConnection,CursorType,LockType,Options
(1)Source
Recordset对象可以通过Source属性来连接Command对象。
Source参数可以是一个Command对象名称、一段SQL命令、一个数据表名称、
一个存储过程或是一个Recordset文件名。
(2)ActiveConnection
Recordset对象可以通过ActiveConnection属性来连接Connection对象。
ActiveConnection可以是一个Connection对象或是一串包含数据库连接
信息(ConnectionString)的字符串参数。
(3)CursorType
CursorType参数表示将以什么样的游标类型启动数据,
包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic
adOpenKeyset 类似动态游标,允许任意移动,并且允许更改记录集。
其他用户对记录集的添加和删除,这个游标反映不出来。
但它能反映出其他用户对记录集的更改。
(4)Lock Type
LockType参数表示要采用的Lock类型,
包含adLockReadOnly、adLockPessimistic、adLockOptimistic
及 adLockBatchOptimistic等
adLockOptimistic 只在调用Update方法时才锁定记录。
当数据源正在更新时,系统并不会锁住其他用户的动作,
其他用户可以对数据进行 增、删、改的操作。
6.还需说明的是,MsgString该参数是传址的,用来返回一些查询的文字信息,如查询成功,查询错误等。
相关文章推荐
- 【总结】学生信息管理系统问题总结(二)
- 【VB】学生信息管理系统问题总结
- 解决学生信息管理系统之List列表中重复添加相同数据问题。
- 学生信息管理系统——问题调试
- 学生信息管理系统“重复设置”问题
- 学生信息管理系统之日期添加方式自动转换问题
- 学生信息管理系统问题(一)
- 学生信息管理系统-问题解决
- 学生信息管理系统常见的几个问题
- 学生信息管理系统问题集锦(二)
- 在敲学生信息管理系统中遇到的问题及解决方法
- 学生信息管理系统问题集锦(一)
- 学生信息管理系统——常见问题(一)
- 学生信息管理系统——常见问题(二)
- 学生信息管理系统问题集锦(二)
- 学生信息管理系统问题集锦(二)
- 学生信息管理系统问题总结(一)
- 学生信息管理系统---信息查询窗口无法查询到数据(问题及其解决办法)
- [置顶] 学生信息管理系统“重复设置”问题
- 学生信息管理系统的问题总结