VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 使用rdoPreparedStatement实现参数化查询
发表评论(0)作者:孙亚民, 平台:VB6.0+Win98, 阅读:8795, 日期:2001-03-24
使用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)进行查询了。各位在实际编程中可根据需要对此进行优化。