c#

位置:IT落伍者 >> c# >> 浏览文章

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


发布日期:2020年01月24日
 
C#高级编程:数据读取器[1]
——此文章摘自《C#高级编程(第版)》定价元 特价元 购买

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

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

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

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

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

using System;

using SystemDataOleDb;

目前所利用的所有数据提供程序都在同一个DLL中所以只需要引用SystemDatadll程序集就可以导入本节使用的所有类

public class DataReaderExample

{

public static void Main(string[] args)

{

string source = Provider=SQLOLEDB; +

server=(local)\\NetSDK; +

integrated security=SSPI; +

database=northwind;

string select = SELECT ContactNameCompanyName FROM Customers;

OleDbConnection conn = new OleDbConnection(source);

connOpen();

OleDbCommand cmd = new OleDbCommand(select conn);

OleDbDataReader aReader = cmdExecuteReader();

while(aReaderRead())

ConsoleWriteLine({} from {}

aReaderGetString() aReaderGetString());

aReaderClose();

connClose();

}

}

前面的代码包含其他章节介绍的许多熟悉的C#功能要编译该示例使用下面的命令

csc /t:exe /debug+ DataReaderExamplecs /r:SystemDatadll

在前面的示例中下面的代码根据源连接字符串创建一个新OLE DBNET数据库连接

OleDbConnection conn = new OleDbConnection(source);

connOpen();

OleDbCommand cmd = new OleDbCommand(select conn);

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

OleDbDataReader aReader = cmdExecuteReader();

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

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

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

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

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

object o = aReader[];

object o = aReader[CategoryID];

[] []

               

上一篇:.NET 4.0函数式编程与协调数据结构

下一篇:给.Net程序员和WEB程序员建议[2]