ADO.NET:从 SQL Server 检索数据

此示例阐释如何使用 SqlDataReader 类从 SQL Server 读取数据。此类提供了一种从数据源读取只进数据记录流的方法。如果要使用具有 OLE DB 接口或 SQL Server 7.0 以前的 SQL Server 版本的数据库,请参阅从 OLE DB 检索数据。

SqlDataReader 是通过调用 SqlCommand 的 ExecuteReader 方法来创建的,而不是通过直接使用构造函数创建的。当 SqlDataReader 在使用中时,相关联的 SqlConnection 将忙于为 SqlDataReader 提供服务。在这种情况下,除了关闭 SqlConnection 之外,无法在 SqlConnection 上执行任何其他操作。在调用 SqlDataReader 的 Close 方法之前,这种情况一直存在。

SqlDataReader 提供一种从 SQL Server 数据源读取只进数据记录流的方法。要进行交互性更强的操作,如滚动、筛选、定位、远程处理等,请使用数据集。

此示例创建到 Northwind 数据库的 SqlConnection。然后使用 SqlCommand ExecuteReader 方法执行从雇员 (Employee) 表中选择项的 SqlCommand。此命令的结果将传递给 SqlDataReader。

C# :

SqlDataReader myDataReader = null;

SqlConnection mySqlConnection = new SqlConnection("server=(local)/VSdotNET;Trusted_Connection=yes;database=northwind");
SqlCommand mySqlCommand = new SqlCommand("SELECT EmployeeID, LastName, FirstName, Title, ReportsTo FROM Employees", mySqlConnection);
...
mySqlConnection.Open();
myDataReader = mySqlCommand.ExecuteReader(CommandBehavior.CloseConnection);

 

VB:

Dim myDataReader as SqlDataReader
Dim mySqlConnection as SqlConnection
Dim mySqlCommand as SqlCommand

mySqlConnection = new SqlConnection("server=(local)/VSdotNET;Trusted_Connection=yes;database=northwind")
mySqlCommand = new SqlCommand("SELECT EmployeeID, LastName, FirstName, Title, ReportsTo FROM Employees", mySqlConnection)
...
mySqlConnection.Open()
myDataReader = mySqlCommand.ExecuteReader(CommandBehavior.CloseConnection)

 

此示例使用 SqlDataReader Read 方法读取全部数据,然后将数据元素写出到控制台。

C# :

while (myDataReader.Read())
{
Console.Write(myDataReader.GetInt32(0) + "/t");
Console.Write(myDataReader.GetString(2) + " " + myDataReader.GetString(1) + "/t");
Console.Write(myDataReader.GetString(3) + "/t");
if (myDataReader.IsDBNull(4))
Console.Write("N/A/n");
else
Console.Write(myDataReader.GetInt32(4) + "/n");
}

VB:

do while (myDataReader.Read())
Console.Write(myDataReader.GetInt32(0).ToString() + Chr(9))
Console.Write(myDataReader.GetString(2) + " " + myDataReader.GetString(1) + Chr(9))
Console.Write(myDataReader.GetString(3) + Chr(9))
if (myDataReader.IsDBNull(4)) then
Console.Write("N/A" + Chr(10))
else
Console.Write(myDataReader.GetInt32(4).ToString() + Chr(10))
end if
loop

最后,该示例先关闭 SqlDataReader,然后再关闭 SqlConnection。

C# :

// Always call Close when done reading.
myDataReader.Close();

// Close the connection when done with it.
mySqlConnection.Close();

VB:

' Always call Close when done reading.
myDataReader.Close()

' Close the connection when done with it.
mySqlConnection.Close()

摘要
1、SqlDataReader 用于从 SQL Server 读取只进数据记录流。
2、请记住先关闭 SqlDataReader,然后再关闭 SqlConnection。
3、每次只能在 SqlConnection 上打开一个 SqlDataReader。如果 SqlDataReader 在使用中,相关联的 SqlConnection 将忙于为 SqlDataReader 提供服务。在这种情况下,除了关闭 SqlConnection 之外,无法在 SqlConnection 上执行任何其他操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值