利用Command创建执行SQL语句的模块
2013-09-22 19:20
411 查看
最近两天开始为机房收费系统编写代码了,在机房收费系统中,最核心的代码就是执行SQL语句,返回一个Recordset对象的过程,有这样功能的代码我们以前在学生信息管理系统中接触过:
在学生信息管理系统中,来执行insert,delete.update语句的是利用的Connection对象的Execute方法,而执行select语句的时候,用的是Recordset方法的Open方法,但是,实际我们在后来的调用中,用到的只是Recordset对象来执行Select语句,也就是只是用到上面代码的Else下面的部分,而那些删除,插入,更新,都用的是Recordset.Update一句搞定,根本没有自己写过这些语句。
前一阵子开会,听了师父的要求,于是,放弃了复制粘贴原来的模块,而是自己写了一个核心模块。
这个函数主要是利用Connection对象连接数据库,然后利用Command对象来执行SQL语句,并将查询的结果保存在Recordset对象中。这个函数有两个参数,一个是SQL字符串,用来传递给Command对象执行对数据库的操作,另一个字符串表示用来显示程序运行的错误,调试时使用的。
模块刚刚做好,只刚在登录窗口中使用过了,但是不知道是不是可以应用于所有的SQL操作,目前还在试验中。
请多多指教。
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset '本函数的功能是执行SQL语句,并返回结果集(传递参数SQL传递查询语句,MsgString传递查询信息。自身以一个数据集对象的形式返回 Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sTokens() As String ' 定义一个字符串数组,来保存分隔后的字符 On Error GoTo ExecuteSQL_Error '错误处理 sTokens = Split(SQL) '将SQL按空格分成字符串数组,保存在sToken()字符数组中 '创建连接 Set cnn = New ADODB.Connection cnn.Open ConnectString If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '如果stoken(0)中的第一个字符是以上四个单词之一,则向下进行(此处加上了SELECT一词,因为在登录时,有选择这一项) '执行查询语句 cnn.Execute SQL '利用ADODB.Connection对象的Execute方法执行sql语句的查询 '返回查询信息 MsgString = sTokens(0) & "query successful" '虽然MsgString不是返回值,但传递方式是ByRef,实参地址和这个地址相同 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
在学生信息管理系统中,来执行insert,delete.update语句的是利用的Connection对象的Execute方法,而执行select语句的时候,用的是Recordset方法的Open方法,但是,实际我们在后来的调用中,用到的只是Recordset对象来执行Select语句,也就是只是用到上面代码的Else下面的部分,而那些删除,插入,更新,都用的是Recordset.Update一句搞定,根本没有自己写过这些语句。
前一阵子开会,听了师父的要求,于是,放弃了复制粘贴原来的模块,而是自己写了一个核心模块。
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset Dim cnn As ADODB.Connection '定义ADO的连接对象 Dim rst As ADODB.Recordset '定义ADO 的记录集对象 Dim cmd As ADODB.Command '定义ADO的command对象,用此对象来执行SQL语句 On Error GoTo ExecuteSQL_Error '错误处理,出现错误后,跳转到错误处理过程 '用Connection对象连接数据库 Set cnn = New ADODB.Connection '实例化Connection对象 cnn.ConnectionString = ConnectionString '将连接子符串赋给连接对象 cnn.Open '打开连接对象 '用command对象执行对数据库的操作 Set cmd = New ADODB.Command '实例化command对象 Set cmd.ActiveConnection = cnn '指定cmd对象当前所属的connection对象 cmd.CommandText = Trim(SQL) '设置SQL语句 'cmd.CommandType = adCmdText ’设置或返回一个 Command 对象的类型 '将查询的结果保存在recordset对象中 Set rst = New ADODB.Recordset rst.CursorType = adOpenKeyset '设置游标类型 rst.LockType = adLockOptimistic '设置锁定类型 Set rst = cmd.Execute() '执行查询,并将查询的结果保存在recordset对象中 Set ExecuteSQL = rst '返回函数的结果 ExecuteSQL_Error: MsgString = Err.Description '经错误信息报存在msgstring字符串中 'If Testtxt(MsgString) = True Then '如果产生错误信息,直接退出 'If (MsgBox(MsgString, vbOKOnly, "提示")) = vbOKOnly Then '显示错误提示 'GoTo ExecuteSQL_Exit '遇到错误后退出 ' End If 'End If ExecuteSQL_Exit: '退出执行SQL语句,释放清空对象 Set rst = Nothing '清空记录集对象 Set cmd = Nothing '释放command对象 Set cnn = Nothing '断开连接 'cnn.Close 'rst.Close Exit Function End Function
这个函数主要是利用Connection对象连接数据库,然后利用Command对象来执行SQL语句,并将查询的结果保存在Recordset对象中。这个函数有两个参数,一个是SQL字符串,用来传递给Command对象执行对数据库的操作,另一个字符串表示用来显示程序运行的错误,调试时使用的。
模块刚刚做好,只刚在登录窗口中使用过了,但是不知道是不是可以应用于所有的SQL操作,目前还在试验中。
请多多指教。
相关文章推荐
- 利用Command创建执行SQL语句的模块
- 利用SQL语句创建、修改、执行、删除存储过程
- 利用SQL语句创建、修改、执行、删除存储过程(简单应用)
- 利用SQL语句创建、修改、执行、删除存储过程
- 如何利用SQL语句创建与保留关键字同名的字段名(如year,month,day)
- 在VB.NET中 用代码 利用SQL语句创建数据库、表、存储过程、视图、索引、规则、修改表、查看数据等的方法
- 利用SQL语句查询SQL中所有正在执行的命令
- 在创建外键约束的时候, 设置级联删除为SET NULL执行sql语句的时候显示有错误,(数据库为sqlserver2000)?
- 利用sqlcommandbulider写sql语句
- 加载驱动+建立连接+创建sql语句+执行并获取结果+释放连接 增删改查
- 十五、Qt数据库 之 利用QSqlQuery类执行SQL语句
- 利用任务计划定时执行SQL语句
- 利用pl/sql执行计划评估SQL语句的性能简析
- sql server中利用sql语句如何创建角色和用户
- 动态创建sql数据表的执行语句
- sql server中利用sql语句如何创建角色和用户
- 利用mysql客户端批量执行sql语句
- hql,qbc,执行自己创建的sql语句 ,聚合函数
- mysql命令行创建存储过程命令行定时执行sql语句
- 在SSH2开发平台下利用Hibernate Session对象执行原生Sql语句