SQL参数化查询讲座 (七)

本文介绍ADO中使用参数化查询的方法,通过VB代码示例展示了如何创建参数、执行插入和查询操作。适用于提高数据库操作的安全性和效率。

ADO中,查询的一般过程是创建Connection对象连接数据库,再创建Command对象执行SQL语句或存储过程。如果SQL语句有返回数据,则用Recordset对象接收,然后以游标方式遍历Recordset中的每一行,读取查询结果(也可把整个Recordset保存到文件或数据流中)。在一般场合,Command对象可以省略,其职能由Connection对象和Recordset对象代替。不过如果采用参数化查询,则少不了Command对象。该对象创建后,先指定SQL语句(或存储过程),然后创建SQL语句中待定的各个参数,给参数赋值后再执行Command对象。

待定的参数用Parameter对象代表。在Parameter对象中,Name 属性可设置或返回参数名称,Value 属性可设置或返回参数值,Direction属性指示是输入参数、输出参数还是输入输出参数,Type属性定义参数的数据类型,其他几个属性可设置或返回参数特性。

Command对象有一个Parameters属性,它是Parameters集合类型,其中包含SQL语句(或存储过程)的所有参数。在Parameters集合中,可以通过名称或序号访问各个参数。通常,用Command对象的CreateParameter方法创建每个Parameter对象,再用Parameters集合的Append方法添加进来。Command对象还有一个布尔类型的Prepared属性,该属性如果为True,则表示该指令在第一次执行之前必须保存查询语句。

为了使大家对ADO中的参数化查询有更清晰的认识,这里举一个例子。在这个例子中,应用程序访问Access数据库。数据库路径为d:/db.mdb,里面的数据表table1包含两个数据列,其中column1为数字类型,column2为文本类型。下面的代码向数据表依次插入“西施”、“昭君”、“貂蝉”3位古代美女,然后查询插入的第二条记录,如果执行成功,会弹出对话框显示插入到表中的数据“昭君”。

 

Dim cnn As Connection  ' 连接到Access数据库

Dim cmd1 As Command  ' 插入数据的SQL命令

Dim cmd2 As Command  ' 查询数据的SQL命令

Dim rs As Recordset  ' 返回查询结果

Dim param1 As Parameter  ' 数字类型的参数

Dim param2 As Parameter  ' 文本类型的参数

 

Set cnn = New Connection

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/db1.mdb"

cnn.Execute "DELETE FROM table1", , adExecuteNoRecords

 

' 向数据表插入3条数据

Set cmd1 = New Command

cmd1.ActiveConnection = cnn

cmd1.CommandType = adCmdText

' 指定SQL语句

cmd1.CommandText = "INSERT INTO table1 VALUES(?,?)"

cmd1.Prepared = True

' 创建参数

Set param1 = cmd1.CreateParameter("column1", adInteger)

cmd1.Parameters.Append param1

Set param2 = cmd1.CreateParameter("column2", adVarChar, , 100)

cmd1.Parameters.Append param2

' 插入1,"西施"

param1.Value = 1

param2.Value = "西施"

cmd1.Execute , , adExecuteNoRecords

' 插入2,"昭君"

param1.Value = 2

param2.Value = "昭君"

cmd1.Execute , , adExecuteNoRecords

' 插入3,"貂蝉"

param1.Value = 3

param2.Value = "貂蝉"

cmd1.Execute , , adExecuteNoRecords

 

' 查询第2条记录

Set cmd2 = New Command

cmd2.ActiveConnection = cnn

cmd2.CommandType = adCmdText

' 指定SQL语句

cmd2.CommandText = "SELECT column2 FROM table1 WHERE column1=?"

cmd2.Prepared = True

' 创建参数并赋值

cmd2.Parameters.Append cmd2.CreateParameter("column1", adInteger, , , 2)

' 查询并显示查询结果

Set rs = cmd2.Execute

If Not rs.EOF Then

    MsgBox rs(0)

End If

 

上面的代码是用VB编写的。稍作修改,就可以移植到ASP脚本中。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值