此示例阐释如何使用SqlDataReader类从SQLServer读取
数据。此类提供了一种从
数据源读取只进
数据记录流的方法。如果要使用具有
OLEDB接口或SQLServer7.0以前的SQLServer版本的
数据库,请参阅从OLEDB检索
数据。
SqlDataReader是通过调用SqlCommand的ExecuteReader方法来创建的,而不是通过直接使用构造函数创建的。当
SqlDataReader在使用中时,相关联的SqlConnection将忙于为SqlDataReader提供服务。在这种情况下,除了关闭
SqlConnection之外,无法在SqlConnection上执行任何其他操作。在调用SqlDataReader的Close
方法之前,这种情况一直存在。
SqlDataReader提供一种从SQLServer数据源读取只进数据记录流的方法。要进行交互性更强的操作,如滚动、筛选、定位、远程处理等,请使用数据集。
此示例创建到Northwind数据库的SqlConnection。然后使用SqlCommandExecuteReader方法执行从雇员
(Employee)表中选择项的SqlCommand。此命令的结果将传递给SqlDataReader。
C#:
SqlDataReadermyDataReader=null;
SqlConnectionmySqlConnection=newSqlConnection("server=(local)\VSdotNET;Trusted_Connection=yes;database=northwind");
SqlCommandmySqlCommand=newSqlCommand("SELECTEmployeeID,LastName,
FirstName,Title,ReportsToFROMEmployees",mySqlConnection);
...
mySqlConnection.Open();
myDataReader=mySqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
VB:
DimmyDataReaderasSqlDataReader
DimmySqlConnectionasSqlConnection
DimmySqlCommandasSqlCommand
mySqlConnection=newSqlConnection("server=(local)\VSdotNET;Trusted_Connection=yes;database=northwind")
mySqlCommand=newSqlCommand("SELECTEmployeeID,LastName,FirstName,
Title,ReportsToFROMEmployees",mySqlConnection)
...
mySqlConnection.Open()
myDataReader=mySqlCommand.ExecuteReader(CommandBehavior.CloseConnection)
此示例使用SqlDataReaderRead方法读取全部数据,然后将数据元素写出到控制台。
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:
dowhile(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))
endif
loop
最后,该示例先关闭SqlDataReader,然后再关闭SqlConnection。
C#:
//AlwayscallClosewhendonereading.
myDataReader.Close();
//Closetheconnectionwhendonewithit.
mySqlConnection.Close();
VB:
'AlwayscallClosewhendonereading.
myDataReader.Close()
'Closetheconnectionwhendonewithit.
mySqlConnection.Close()
摘要
1、SqlDataReader用于从SQLServer读取只进数据记录流。
2、请记住先关闭SqlDataReader,然后再关闭SqlConnection。
3、每次只能在SqlConnection上打开一个SqlDataReader。如果SqlDataReader在使用中,相关联的
SqlConnection将忙于为SqlDataReader提供服务。在这种情况下,除了关闭SqlConnection之外,无法在
SqlConnection上执行任何其他操作。