asp访问数据源综述2(转自IIS5.0文档)

80酷酷网    80kuku.com

  iis|访问|数据|数据源使用 Recordset 对象处理结果
为了检索数据、检查结果和更改数据库,ADO 提供了 Recordset 对象。正如名字所示,“Recordset”对象具有用来检索和显示数据库行(或叫“记录”)的功能,这取决于您的查询约束条件。“Recordset”对象保留由查询返回的每一条记录的位置,这样就能使您查看所有的结果,每次一条。

检索记录集
成功的 Web 数据应用程序既使用“Connection”对象来建立链接,又使用“Recordset”对象来处理返回的数据。通过综合使用这两种对象的一些特殊功能,开发出的数据库应用程序几乎可以执行所有的数据处理任务。例如,下面的服务器端脚本使用“Recordset”对象执行 SQL 的 SELECT 命令。此 SELECT 命令用来检索基于查询约束条件的信息集。此查询也包含 SQL WHERE 子句,用来将查询限制到一个指定的标准。在本例中,WHERE 子句将查询限制在 Customers 数据库表中姓氏字段包含 Smith 的所有记录。

<%
'建立数据源连接
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\Employees.mdb"
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString

'例示 Recordset 对象
Set rstCustomers = Server.CreateObject("ADODB.Recordset")

'使用 Open 方法打开记录集
'并使用通过 Connection 对象建立的连接。
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Smith' "
rstCustomers.Open strSQL, cnn

'遍历记录集和显示结果
'并使用 MoveNext 方法递增记录位置。
Set objFirstName = rstCustomers("FirstName")
Set objLastName = rstCustomers("LastName")
Do Until rstCustomers.EOF
Response.Write objFirstName & " " & objLastName & "
"
rstCustomers.MoveNext
Loop

%>
注意,在上例中,“Connection”对象建立数据库连接,而“Recordset”对象使用同一连接从数据库中检索结果。当需要精确配置建立数据库链接的方式时,该方法非常有用。例如,如果要指定在连接中止之前的时间延迟,可能需要使用“Connection”对象设置该属性。但是,如果只想使用 ADO 的默认连接属性建立连接,您可以使用“Recordset”对象的“Open”方法来建立链接:

<%
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\Employees.mdb"
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Smith' "
Set rstCustomers = Server.CreateObject("ADODB.Recordset")

'使用 Open 方法打开连接
'并使用通过 Connection 对象建立的连接。
rstCustomers.Open strSQL, strConnectionString

'遍历记录集,显示结果,
'并使用 MoveNext 方法递增记录位置。
Set objFirstName = rstCustomers("FirstName")
Set objLastName = rstCustomers("LastName")
Do Until rstCustomers.EOF
Response.Write objFirstName & " " & objLastName & "
"
rstCustomers.MoveNext
Loop
%>
当使用“Recordset”对象的“Open”方法来建立连接时,实际上正在隐含地使用“Connection”对象保护链接的安全。详细信息,请参阅 Microsoft ActiveX 数据对象 (ADO) 文档,可在 Microsoft Universal Data Access Web 站点 http://www.microsoft.com/data/ 上找到该文档。

注意 要明显提高 ASP 数据库应用程序的性能,请考虑在“应用程序”状态中高速缓存记录集。详细信息,请参阅高速缓存数据。

统计记录集中返回的记录数有时候很有用。“Recordset”对象的“Open”方法使您能够指定可选的光标参数,以确定潜在提供者检索和浏览记录集的方法。通过给用来执行查询的语句添加 adOpenKeyset 光标参数,可以使客户端应用程序完全地浏览记录集。因此,应用程序可使用 RecordCount 属性精确地统计记录集中的记录数。请参看下面的示例:

<%
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM NewOrders", "Provider=Microsoft.Jet.OLEDB.3.51;Data Source='C:\CustomerOrders\Orders.mdb'", adOpenKeyset, adLockOptimistic, adCmdText

'使用 Recordset 对象的 RecordCount 属性进行统计。
If rs.RecordCount >= 5 then
Response.Write "我们已经收到下面" & rs.RecordCount & "个新订单
"

Do Until rs.EOF
Response.Write rs("CustomerFirstName") & " " & rs("CustomerLastName") & "
"
Response.Write rs("AccountNumber") & "
"
Response.Write rs("Quantity") & "
"
Response.Write rs("DeliveryDate") & "

"
rs.MoveNext
Loop

Else
Response.Write "订单数少于 " & rs.RecordCount & "。"
End If

rs.Close
%>
使用 Command 对象改善查询
使用 ADO 的 Command 对象执行查询的方式与使用“Connection”和“Recordset”对象执行查询的方式一样,但是使用“Command”对象可以准备(或编译)对数据库源的查询,然后使用各种不同的值重复发送此查询。用这种方法编译查询的好处在于,当您需要重新发布修改过的已有查询时,可以大大地减少发布时间。另外,还可以留下部分 SQL 查询不进行定义,用到了在执行之前改变查询部分的选项。

“Command”对象的“Parameters”集合可以使您避免每次重新发布查询时都要重建查询的麻烦。例如,如果您需要定期更新基于 Web 的库存系统的供应和费用信息,就可以按照下面的方式预定义查询:

<%
'使用 Connection 对象打开连接注意,Command 对象
'并不具有用来建立连接的 Open 方法。
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\Inventory.mdb"
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString

'例示 Command 对象;使用 ActiveConnection 属性将
'连接附加到 Command 对象上。
Set cmn= Server.CreateObject("ADODB.Command")
Set cmn.ActiveConnection = cnn

'定义 SQL 查询。
cmn.CommandText = "INSERT INTO Inventory (Material, Quantity) VALUES (?, ?)"

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: