此示例阐释如何使用 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); 此示例使用 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"); } 最后,该示例先关闭 SqlDataReader,然后再关闭 SqlConnection。 C# : // 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 上执行任何其他操作。