利用Command创建执行SQL语句的模块

    最近两天开始为机房收费系统编写代码了,在机房收费系统中,最核心的代码就是执行SQL语句,返回一个Recordset对象的过程,有这样功能的代码我们以前在学生信息管理系统中接触过:

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操作,目前还在试验中。

   请多多指教。  

            

 
时间: 2024-09-28 10:31:23

利用Command创建执行SQL语句的模块的相关文章

[Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句

[Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句 楼主  发表于 2013-5-15 22:39:29 | 查看: 813| 回复: 0 利用QSqlQuery类执行SQL语句 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语        SQL即结构化查询语言,是关系数据库的标准语言.前面两节中已经在Qt里利用QSqlQuery类执行了SQL语句,这一节我们将详细讲解该类的使用.需要说明,因为我们重在讲解Qt中的数据库使用,而非专业的讲解数据库

RMAN 提示符下执行SQL语句

       在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐.实际上RMAN为我们提供了命令行下执行一些简单的SQL语句以及PL/SQL的方法,以避免上述情形.本文描述了RMAN提示符下的一些常用命令及其用法.   1.RMAN提示符下执行SQL语句       语法: SQL '<command>' ;           语法比较简单,就是提示符下输入SQL,后接SQL命令,命令用单引号括起来      command 通常为

让你提前认识软件开发(20):如何在C语言里面执行SQL语句?

第1部分 重新认识C语言 如何在C语言里面执行SQL语句? [文章摘要]         在通信类软件中,程序经常需要与数据库打交道.为了实现诸如从数据库中获取数据.更新数据库表某字段.插入或删除某条数据等功能,就需要在C语言程序中构造一些SQL语句,并用函数来执行这些SQL语句.         本文介绍如何在C语言程序中构造并执行SQL语句,为相关软件开发工作的开展提供了参考. [关键词]          SQL语句  C语言  程序  流程  开发   一.为什么要在C语言程序中执行SQ

在ASP.NET中用存储过程执行SQL语句

  存储过程:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程.by google 存储过程执行效率比单独的SQL语句效率高. 样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性目录下. 比如,创建一个存储过程 create procedure procNewsSelectNewNews as begi

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库.   创建表: create table person( _id integer primary key, name varchar(20), age integer );   添加: insert into person(name, age) values('lisi', 19);   删除: delete from person where _id = 1;   修改: update person se

linq2sql:直接执行sql语句

1.ExecuteQuery方法 看命名,我们很容易联想到ado.net里熟悉的Command的ExecuteNonQuery方法,但是VS的智能提示告诉我们这个方法返回的是一个泛型集合,应该"所思非所得".下面通过一个简单方法,验证我们的猜想(数据库设计可以参考这一篇): /// <summary> /// 直接执行sql语句, 获取总人数 /// </summary> /// <returns></returns>  public i

c++-如何利用C++来解析SQL语句中的select语句?

问题描述 如何利用C++来解析SQL语句中的select语句? SELECT * FROM stu WHERE ((Name = "Jack") AND ((Age > 18) OR (Height > 170))) 这是一条SQL语句,怎么用C++解析它,并从内存数据中输出结果?求大神给点思路即可.... 解决方案 你是要解析?还是要执行? 如果要执行SQL语句,需要学习ADO编程,可以百度一下vc ado编程. 解决方案二: 有c++和数据库对接的各种库的,mysql的

请大家帮忙-实现使用C#语言,在.net开发平台中执行sql语句

问题描述 实现使用C#语言,在.net开发平台中执行sql语句 实现使用C#语言,在.net开发平台中执行sql语句了,如查询某张表数据,向某张表插入一条数据,在某张表中编辑一条数据,删除某张表的一条数据. 解决方案 给你段代码,你参考一下 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.W

使用BAT批处理执行sql语句的代码_DOS/BAT

1.把待执行Sql保存在一个文件,这里为20110224.sql.2.新建一个扩展名.bat的批处理文件,输入下面命令并保存后,双击.bat文件,系统会自动执行20110224.sql的语句: 复制代码 代码如下: osql -S gdjlc -d TestDB -U sa -P 1 -i 20110224.sql osql参数见下面=======================================================================: E:\>osql