网站首页站长博客下载中心域名交易站长论坛域名主机免费电邮免费域名中文排行排名查询站长书库书籍教程下载
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
学院首页 网络编程 网页设计 图形图象 数 据 库 服 务 器 网络媒体 网络安全 个人专栏 站长CLUB 业界新闻 信息公告
 当前位置:首页 >> 网络编程 >> NET专区 >> 正文
公告通知
返回上级列表
资料搜索
相关文章
用户自定义控件的应用
c#.net常用函数和方法集
在VB中使用水晶报表的一种简易编
C#调用父类的父类的方法
浏览.NET Framework 2.0 类型库中
为.Text Blog 添加 计数器
编程实现邮件地址有效性检测 
VB/VB.NET/C#导出到Excel的方法
c#高性能在WEB端产生验证图片
用System.Web.Caching.Cache保存
ADO.NET快速起步
[ 来源:中国站长学院 | 作者:郁郁小蝎 | 时间:2005-6-22 15:06:04 | 浏览:人次 ]
收藏到新浪ViVi 收藏到365KEY 收藏到我摘  字号选择〖    〗/ 双击滚屏 单击停止  
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对象进行深入的探讨。

本新闻共2页,当前在第2页  1  2  


[发送给好友]  [打印本页]  [关闭窗口]  [返回顶部]   转载请注明来源:http://edu.chinaz.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
栏目编辑: 设计风 责任编辑: 设计风,设计风
原始作者: 郁郁小蝎 录入时间: 2005-6-22 15:06:04
信息来源: 中国站长学院 投稿信箱: Edu#chinaz.com
设为首页 - 加入收藏 - 关于我们 - 广告服务 - 版权申明 - 友情链接 - 联系方式 - 总编信箱 - 会员投稿