VB6 SQL参数化查询模块

本文介绍了一种在VB6环境下封装SQL查询的方法,通过自定义函数AdoOpenRS来简化带有多个参数的SQL语句的编写过程,提高代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      熟悉VB6的朋友在写带有多个参数的SQL语句的时候 ,查询脚本的参数是用&或+号连接起来吗,只有几个参数是尚可,当参数多时可读性就差多了。为了免去麻烦,因此做了此函数。

           虽然ADD的Command对象有Parameters属性,但还是自己封装了带参数的查询方法,有部分参考了宁静兄的:

    

 1 Public Function AdoOpenRS(ByRef wADORecordSet As ADODB.Recordset, _
 2                                 sqlSELECTCommand As String, _
 3                        Optional Param As Variant = "", _
 4                        Optional ActiveADOConn As ADODB.Connection = Nothing, _
 5                        Optional ShowMsgBoxIfFail As Boolean = True, _
 6                        Optional CloseRSIfFail As Boolean = True, _
 7                        Optional SetRSNothingIfFail As Boolean = True, _
 8                        Optional sRetErrDesp As String = "") As Boolean
 9                        
10            'Param  參數數組
11 On Error GoTo errOpenRs
12           If Len(sqlSELECTCommand) = 0 Then Exit Function
13            
14           
15           If TypeName(Param) = "Variant()" Then
16             Dim i As Byte
17             For i = 1 To UBound(Param)
18               sqlSELECTCommand = Replace(sqlSELECTCommand, "?" & i, Param(i))
19             Next
20           End If
21             
22            wADORecordSet.CursorLocation = adUseClient '客户端游标
23         
24           If ActiveADOConn Is Nothing Then
25             wADORecordSet.Open sqlSELECTCommand, SQLConn, adOpenDynamic, adLockOptimistic
26           Else
27             wADORecordSet.Open sqlSELECTCommand, ActiveADOConn, adOpenDynamic, adLockOptimistic
28           End If
29         
30           Exit Function
31 errOpenRs:
32           If ShowMsgBoxIfFail Then MsgBox Err.Description, vbExclamation, "ErrOpenRs"
33           'If CloseRSIfFail Then wADORecordSet.Close
34           If SetRSNothingIfFail Then Set wADORecordSet = Nothing
35 End Function

      调用例子:

 1     Dim strsql As String
 2     Dim Param(1 To 1) As Variant
 3     Dim rs As ADODB.Recordset
 4     Set rs = New ADODB.Recordset
 5 
 6     strsql = "select OrderID From [Order] " & _
 7              " where convert(nvarchar(7),OrderDate,120) = '?1'"
 8     Param(1) = Format(Now, "YYYY-MM")
 9 
10    AdoOpenRS rs, strsql, Param
11    
12    

 

 

转载于:https://www.cnblogs.com/xiaoguanqiu/archive/2013/05/09/3068859.html

基于VB6自主研发的轻量级数据库查询客户端工具,启动速度较快,所占资源较小。 附源码,对初学数据库编程的童鞋有所裨益! 1、支持SQLServer、Oracle、Sybase、DB2数据库平台 2、单句执行:可以提交单一的SQL语句给服务器执行。 3、多句一次执行:可以将多个SQL语句用空格或换行的方式进行隔离,程序会一次性提交给数据库服务器执行。(前提条件是语法通过) 4、多句依次执行:可以将多个SQL语句用分号‘;’隔开,程序会逐句提交。 5、执行指定的SQL语句:可以在SQL编辑框中选中部分语句执行,在SQL命令框中通过鼠标连续单击3次可以选择当前行。 6、在事务中执行SQL语句:将执行按钮上方的Trans 框选中,那么程序对于每次提交的SQL语句都是放在事务中执行的,执行不成功程序会进行回滚操作。程序默认不进行事务处理,因为有些语句不能在事务中执行。 版本修订记录: V3.6.0 16:08 2012/6/18 --支持DB2数据库平台,要求客户端安装 DB2 Run-Time Client Lite。 --支持数据库名的记忆功能。 V3.5.11 14:36 2012-5-12 --支持连接非缺省端口号的SQL Server平台。 V3.5.10 8:54 2009/12/22 --将OUT标签更名为Output。 V3.5.9 10:48 2009/8/19 --修订Bug:在Vista或Win7系统下主界面部分被遮盖显示不全的问题。 V3.5.8 --修订Bug:执行的存储过程没有返回结果集,在导出Excel时出现运行时错误。 V3.5.7 --界面标题栏增加当前连接数据库信息。 --修订死循环Bug,死3次后退出执行。 --修订最末语句分号后面跟若干回车符执行死循环的Bug。 V3.5.6 --还是使用TextBox控件作为SQL命令的输入框,RichTextBox控件的滚动条功能不太好用; --使用字符算法实现了双击SQL命令框选中当前行的功能(TextBox控件本身不支持)。 --修订了窗体在Resize时的Bug。 V3.5.5 --使用RichTextBox控件代替原有的TextBox控件SQL命令输入框(支持双击选中整行功能)。 --使用‘;’和‘回车换行’符号联合作为SQL命令逐个提交的分割标志符。 V3.5.4 --修订SQL日志文件记录错误的Bug。 V3.5.3 --修订系统未安装任何打印机的情况下导出Excel失败的Bug(设置打印页面横向时失败)。 V3.5.2 --修订运行目录没有可写权限导致记录日志失败无法提交SQL语句的Bug。 V3.5.0 --新增记录SQL语句日志的功能。 V3.4.0 --新增导出查询结果集到Excel文档的功能。 V3.3.4 --修改了窗体内部控件自动放缩的控制算法; --修改数据显示窗口支持滚轮鼠标的上下左右翻滚操作。 V3.3.0 --修改了连接ORACLE的连接字符串,要求客户端安装ODAC组件(OLEDB); --数据库下拉列表默认上次选择的数据项。 V2.0.0 --支持Sybase平台,要求客户端安装Sybase OLEDB组件; V1.0.0 --支持SQL Server平台,安装包中自带ADO组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值