19
2019
12

ADO.NET:从 SQL Server 检索数据

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 上执行任何其他操作。


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。