使用rdoPreparedStatement实现参数化查询
南京富士通通信设备有限公司
孙亚民
---- 在Client/Server程序的设计中,使用查询参数对数据库进行检索,限制返回的结果集,是必须要考虑的一件事。在VB5.0中,提供了rdoPreparedStatement对象,利用该对象,可以实现交互式参数化查询,并且利用RDO的强劲功能。另外,由于它能附带预编译语句,可以使我们获取极快的执行速度。下面,举一个简单的例子。
---- 假设在SQL Server6.5中的数据库中有如下一个名为person的表:
姓名 籍贯 出生年月
张三 南京 1975.3.10
李四 上海 1976.8.3
王五 北京 1974.6.9
赵六 广州 1977.8.3
---- 现在我们要从该表中按照籍贯进行检索,可以按如下步骤进行:
---- 1.在控制面板的32位ODBC中为该数据库新建一数据源,DSN名字可取为“SQL Server6.5”。
---- 2.在VB5.0中新建一工程,选择Form1,并添加如下对象及属性:
对象 属性 值
CommandButton Name Command1
Caption “查询”
TextBox Name Text1
DBGrid Name DBGrid1
DataSource Msrdc1
MSRDC Name Msrdc1
DataSourceName “”
RecordSource “”
Connect “”
---- 3. 在表单的声明区添加如下代码:
Option Explicit
Dim env As rdoEnvironment
Dim cn As rdoConnection
Dim ps As rdoPreparedStatement
Dim rst As rdoResultset
---- 4. 在Form1的Load事件中添加如下代码:
Private Sub Form_Load()
Me.Top = (Screen.Height - Me.Height) / 2
Me.Left = (Screen.Width - Me.Width) / 2
Set env = rdoEnvironments(0)
Set cn = env.OpenConnection("SQL SERVER6.5")
Text1.Text=”请在此输入查询参数”
Text1.selLength=18
initt
End Sub
---- 其中initt过程的代码为:
Private Sub initt()
Dim ssql As String
ssql = “select* from person where 籍贯 like ?”
Set ps = cn.CreatePreparedStatement("ssql", ssql)
End Sub
---- 5. 最后,在Command1的Click事件中添加如下代码:
Private Sub Command1_Click()
ps.rdoParameters(0).Value = Text1.Text
Set rst = ps.OpenResultset
(rdConcurReadOnly, rdConcurReadOnly)
Set MSRDC1.Resultset=rst
MSRDC1.Refresh
End Sub
---- 此时,即可在Text1中输入查询参数,然后按”查询”按钮(Command1)进行查询了。各位在实际编程中可根据需要对此进行优化。