2024年3月21日发(作者:)

C# DataReader读取数据库

中的DataReader可以从数据库中检索只读、只进的数据流。查询结

果在查询执行时返回,并存储在客户端的网络缓冲区中,直到用户使用DataReader

的Read方法对它们发出请求。使用DataReader可以提高应用程序的性能,原因是

它只要数据可用就立即检索数据,并且(默认情况下)一次只在内存中存储一行,

减少了系统开销。

随.NET Framework提供的每个.NET Framework数据提供程序包括一个

DataReader对象:OLE Framework数据提供程序包括一个OleDbDataReader

对象,SQL Server .NET Framework数据提供程序包括一个SqlDataReader对象、

Framework数据提供程序包括一个OdbcDataReader对象,

Framework数据提供程序包括一个OracleDataReader对象。这些对象有一些公共的

方法和属性,如表11-6、11-7所示。

表11-6 公共方法

方法

Close

Dispose

GetName

IsDBNull

NextResult

Read

GetXXX

说明

该方法用于关闭当前DataReader对象

该方法用于释放有DbDataReader占用的资源。从DbDataReader继承

该方法用于获取指定列的名称

该方法用于获取一个值,这个值用于指示列中是否包含不存在的缺少的值

当读取批处理Transact-SQL语句的结果时,使数据读取器前进到下一个结果

该方法用于推进到下一行,如果还有其他行,则返回True;如果已经到达结果集的

末尾,则返回False

该方法用于获取指定列的XXX形式的值,这里的XXX可以是String、Int32、Double

等各种数据类型,例如GetString、GetInt32等

表11-7 公共属性

属性

Depth

FieldCount

HasRows

IsClosed

Item

RecordsAffected

说明

该属性用于获取一个值,该值用于指示当前行的嵌套深度

该属性用于获取当前行中的列数

该属性用于获取一个值,该值指示SqlDataReader是否包含一行或多行

该属性用于检索一个布尔值,该值指示是否已关闭指定的DataReader实例

该属性用于获取已本机格式表示的列的值

该属性用于获取执行Transact-SQL语句所更改、插入或删除的行数

VisibleFieldCount 该属性用于获取DataReader中未隐藏的字段的数目

下面是一个使用DataReader读取数据库并输入数据内容的实例,代码如下所

示。

(1)打开Microsoft Visual Studio 2010。在菜单栏中,执行【文件】|【新建项

目】命令,打开【新建项目】对话框。

(2)在【新建项目】窗口中,选择“控制台应用程序”并在名称栏中输入项

目的名称为“ConsoleApplication1”。然后,单击【确定】按钮。

(3)在控制台应用程序中,添加数据库连接读取数据表内容并输出,代码如

下所示。

using System;

using c;

using ;

using ;

using ent;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

string strSqlConnect = @"Data Source=(local)SQLEXPRESS;Initial

Catalog=book;Integrated Security=True";

SqlConnection con = new SqlConnection(strSqlConnect);

();//打开数据库

SqlCommand cmd = new SqlCommand("select * from book1", con);

SqlDataReader dr = eReader();

ine("图书信息如下:" );

while (())

{

ine("--------------------------------");

ine("书名:" + dr["name"].ToString());

ine("作者:" + dr["author"].ToString());

}

}

}

}

(4)在上述代码中,使用DataReader对象的Read方法判断DataReader对象

中的数据是否还有下一行,并将游标下移到下一行。通过Read方法可以遍历读取

数据库中行的信息,当读取到一行时,需要获取某列的值只需要使用“[”和“]”

运算符来确定某一列的值即可。按下【Ctrl+S】键保存源代码,然后执行菜单栏中

的【调试】命令或者按下【Ctrl+F5】键查看运行结果,如图11-9所示。

图11-9 执行结果