C#高级编程:数据读取器[1]

如题所述

第1个回答  2022-10-05
    ——此文章摘自《C#高级编程(第 版)》定价 元 特价 元 购买

    据读取器(data reader)是从一个数据源中选择某些数据的最简单快捷的方法 但这也是功能最弱的一个方法 不能直接实例化数据阅读器 即实例是调用ExecuteReader()方法后从相应数据库的命令对象中返回的

    下面的代码说明了如何从Northwind数据库的Customer表中选择数据 这个示例连接了数据库 选择许多记录 循环所选的记录 并把它们输出到控制台上

    这个示例使用OLE DB提供程序作为一个来自SQL提供程序的简要的数据暂存器 在大多数情况下 OleDbClient类与SqlClient类是一对一的关系 例如OleDbConnection对象就类似于在前面的示例中所使用的SqlConnection对象

    要对OLE DB数据源执行命令 应使用OleDbCommand类 下面的代码执行一个简单的SQL语句 读取记录 返回一个OleDbDataReader对象

    注意下面的第二个using语句使OleDb类可用     using System;    using System Data OleDb;

    目前所利用的所有数据提供程序都在同一个DLL中 所以只需要引用System Data dll程序集 就可以导入本节使用的所有类     public class DataReaderExample     {        public static void Main(string[] args)        {           string source = Provider=SQLOLEDB; +                        server=(local)\\NetSDK; +                        integrated security=SSPI; +                        database=northwind ;           string select = SELECT ContactName CompanyName FROM Customers ;           OleDbConnection conn = new OleDbConnection(source);           conn Open();           OleDbCommand cmd = new OleDbCommand(select conn);           OleDbDataReader aReader = cmd ExecuteReader();           while(aReader Read())              Console WriteLine( { } from { }                                aReader GetString( ) aReader GetString( ));           aReader Close();           conn Close();        }     }     前面的代码包含其他章节介绍的许多熟悉的C#功能 要编译该示例 使用下面的命令     csc /t:exe /debug+ DataReaderExample cs /r:System Data dll     在前面的示例中 下面的代码根据源连接字符串 创建一个新OLE DB NET数据库连接        OleDbConnection conn = new OleDbConnection(source);        conn Open();        OleDbCommand cmd = new OleDbCommand(select conn);

    第三行根据特定的Select语句创建一个新OleDbCommand对象 以及执行命令时所使用的数据库连接 当有一个有效的命令时 就需要执行它 返回一个初始化了的OleDbDataReader     OleDbDataReader aReader = cmd ExecuteReader();

    OleDbDataReader是一个只向前的连接游标 即只能沿着一个方向遍历记录 而使用的数据库连接一直打开 直到关闭DataReader为止

    提示 OleDbDataReader会使数据库连接一直处于打开状态 直到显式关闭为止

    OleDbDataReader类不能直接实例化 它总是通过OleDbCommand类的ExecuteReader方法调用而返回 打开了一个数据读取器后 就可以用各种方式访问包含在该读取器中的数据

    关闭OleDbDataReader对象(显式调用Close()或通过垃圾收集器收集对象)时 底层的连接也会关闭 这取决于调用了哪个ExecuteReader()方法 如果调用了ExecuteReader()方法 并传递了CommandBehavior CloseConnection 就会在关闭读取器的时候关闭连接

    OleDbDataReader类有一个索引器 可以使用常见的数组语法访问任何字段(但不是类型安全的访问)        object o = aReader[ ];       object o = aReader[ CategoryID ];

lishixinzhi/Article/program/net/201311/15406

相似回答