ADO.NET 快速入门(十四):使用 SQL Server 检索数据

SqlDataReader 类提供了一种从数据源读取数据记录只进流的方法。若是想使用 OLE DB 接口的数据库或者 SQL Server7.0 以前的版本,请参考文章: 使用 OLE DB 检索数据
 
SqlCommand 调用 ExecuteReader 方法建立 SqlDataReader,不经过直接使用构造器建立。当 SqlDataReader 正在使用时,关联的 SqlConnection 处于对 SqlDataReader 服务挂起状态 。在这个状态下,除非关闭 SqlConnection 的链接,没有其余操做能够执行。在调用 SqlDataReader 的 Close 方法以前,会一直保持这种状态。
 
SqlDataReader 提供一种从 SQL Server 数据源读取数据记录只进流的手段。更多交互操做,例如:Scrolling、Filtering、Navigating、Romoting,等等,请使用 DataSet。 
 
这个例子,建立了到 Northwind 库的 SqlConnection 链接。SqlCommand 从 Employee 表选择数据项,而后利用 SqlCommand 的 ExecuteReader 方法执行查询。命令的结果传递给 SqlDataReader。
 
            SqlDataReader myDataReader = null;

            SqlConnection myConnection = new SqlConnection("server=(local);Integrated Security=SSPI;database=northwind;");
            SqlCommand myCommand = new SqlCommand("SELECT EmployeeID, LastName, FirstName, Title, ReportsTo FROM Employees", myConnection);

            myConnection.Open();
            myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

 

这个例子,使用 SqlDataReader 的 Read 方法读取数据而且把数据项输出到控制台程序。
 
            while (myDataReader.Read())
            {
                Console.Write(myDataReader.GetInt32(0) + "\t");
                Console.WriteLine(myDataReader.GetString(2) + " " + myDataReader.GetString(1) + "\t");
                Console.WriteLine(myDataReader.GetString(3) + "\t");

                if (myDataReader.IsDBNull(4))
                    Console.WriteLine("N/A\n");
                else
                    Console.WriteLine(myDataReader.GetInt32(4) + "\n");
            }

 

最后,这个例子关闭 SqlDataReader,而后是 SqlConnection。
 
            // 当读取完成时,调用 Close 方法
            myDataReader.Close();

            // 关闭链接
            myConnection.Close();

 

总结
一、SqlDataReader 用于快速地从数据源读取数据记录只进流。
二、请记住,关闭 SqlDataReader,而后是 SqlConnection。
三、请记住,若是 SqlDataReader 正在使用,关联的 SqlConnection 处于对 SqlDataReader 服务挂起状态。在关闭 SqlConnection 链接之前,没有任何与之的操做能够执行。
 
相关文章
相关标签/搜索