|
 |
资料搜索 |
|
|
|
|
|
|
|
 |
相关文章 |
|
|
|
|
|
|
|
|
|
|
| [ 来源:中国站长学院 | 作者:郁郁小蝎 | 时间:2005-6-22 15:06:04 | 浏览:人次 ] | |
|
ADOCommand
[C#] String SQLStmt = " SELECT * FROM Customers"; ADOCommand myCommand = new ADOCommand(SQLStmt, myConn);
[VB] Dim SQlStmt As String = "SELECT * FROM Customers" Dim myCommand As ADOCommand = New ADOCommand(SQLStmt, myConn)
DataReaders
当你处理大量数据的时候,大量内存的占用会导致性能上的问题。例如,一个连接(connection)用传统的ADO Recordset对象去读1000行数据库的记录,就必须为这1000行记录将内存分配给这个连接直至这个连接的生命周期结束。如果有1000用户在同一时间对同一计算机进行同样的操作,内存被过度的使用就会成为关键性的问题。
为了解决这些问题,.NET框架包括了DataReaders对象,而这个对象仅仅从数据库返回一个只读的,仅向前数据流。而且当前内存中每次仅存在一条记录。
DataReader接口支持各种数据源,比如关系数据和分级数据。DataReader可以适用于在运行完一条命令仅需要返回一个简单的只读记录集。
下面的代码片断阐述了怎么样声明变量指向一个DataReader对象的实例,还包括代码执行时Command对象产生的结果。当调用Command对象执行方法时,Command对象必须已经被创建和作为参数来传递。继续上面的例子:
SQLDataReader
[C#] SQLDataReader myReader = null; myCommand.Execute(out myReader);
[VB] Dim myReader As SQLDataReader = Nothing myCommand.Execute(myReader)
ADODataReader
[C#] ADODataReader myReader = null; myCommand.Execute(out myReader);
[VB] Dim myReader As ADODataReader = Nothing myCommand.Execute(myReader)
接下来这步是一个使用DataReader的简单格式
[C#] While (myReader.Read()) { [C#] While (myReader.Read()) { // do your thing with the current row here }
[VB] While myReader.Read ' do your thing with the current row here End While
下面的例子展示了迄今为止我们所讨论的内容:建立一个到SQL数据源的连接,对于连接的发送select命令,用DataReader对象来保存返回的结果,然后通过循环DataReader取得数据。
下面是用C#写的完整代码。
<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SQL" %>
<html> <head>
<script language="C#" runat="server"> public SQLDataReader myReader; public String html;
protected void Page_Load(Object Src, EventArgs E ) { SQLConnection mySQLConnection = new SQLConnection("server=localhost;uid=sa;pwd=;database=northwind"); SQLCommand mySQLCommand = new SQLCommand("select * from customers", mySQLConnection);
try { mySQLConnection.Open(); mySQLCommd.Execute(out myReader);
.Execute(out myReader);
html="<Table>"; html+="<TR>"; html+="<TD><B>Customer ID</B> </TD>"; html+="<TD><B>Company Name</B></TD>"; html+="</TR>";
while (myReader.Read()) { html+="<TR>"; html+="<TD + myReader["CustomerID"].ToString() + "</TD>"; + myReader["CustomerID"].ToString() + "</TD>"; html+="<TD>" + myReader["CompanyName"].ToString() + "</TD>"; html+="</TR>"; } html+="</Table>"; } catch(Exception e) { html=e.ToString(); } finall y { meader.Close(); ader.Close(); mySQLConnection.Close(); } Response.Write(html); } </script> </head>
<body>
</body> </htm
注意,真正的捕获块已经包括在"try ... catch"语句中了。这提供了一些处理连接时出现异常的方法。在“finally”块中的代码总是会被执行,不管是否已经执行的是“try”或“catch”块,所以它变成关闭reader和conncetion对象的逻辑位置。
同时也注意DataReader中字段的值是怎么被方便的访问和传递的。
总结:本文主要介绍了ADO.NET的基本特点,并且使用的一些代码展示了在ADO.NET中如何建立数据库连接,发送查询命令及使用DataReader对象快速浏览数据集方式。当然作为微软面向分布式应用和数据共享的新一代ADO产品,它正真的精华是DateSets对象。为此,本网站将在即将推出的《ADO.NET深入研究》中对DateSets对象进行深入的探讨。
|
|
|
|
|
|
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
|
|
|
|
|
栏目编辑: 设计风 |
责任编辑: 设计风,设计风 |
|
|
原始作者: 郁郁小蝎 |
录入时间: 2005-6-22 15:06:04 |
|
|
信息来源: 中国站长学院 |
投稿信箱: Edu#chinaz.com |
|
|
|
| |
|