日期:2010-07-20  浏览次数:20803 次

如何使用 SqlDataAdapter 来检索多个行

以下代码阐明了如何使用 SqlDataAdapter 对象发出可生成 DataSet 或 DataTable 的命令。它从 SQL Server Northwind 数据库中检索一组产品类别。

using System.Data;using System.Data.SqlClient;public DataTable RetrieveRowsWithDataTable(){  using ( SqlConnection conn = new SqlConnection(connectionString) )  {    conn.Open();    SqlCommand cmd = new SqlCommand("DATRetrieveProducts", conn);    cmd.CommandType = CommandType.StoredProcedure;    SqlDataAdapter adapter = new SqlDataAdapter( cmd );    DataTable dataTable = new DataTable("Products");    adapter .Fill(dataTable);    return dataTable;  }}

使用 SqlAdapter 生成 DataSet 或 DataTable

1.

创建一个 SqlCommand 对象以调用该存储过程,并将其与一个 SqlConnection 对象(显示)或连接字符串(不显示)相关联。

2.

创建一个新的 SqlDataAdapter 对象并将其与 SqlCommand 对象相关联。

3.

创建一个 DataTable(也可以创建一个 DataSet)对象。使用构造函数参数来命名 DataTable。

4.

调用 SqlDataAdapter 对象的 Fill 方法,用检索到的行填充 DataSet 或 DataTable。

如何使用 SqlDataReader 来检索多个行

以下代码片段阐明了可检索多个行的 SqlDataReader 方法。

using System.IO;using System.Data;using System.Data.SqlClient;public SqlDataReader RetrieveRowsWithDataReader(){  SqlConnection conn = new SqlConnection(         "server=(local);Integrated Security=SSPI;database=northwind");  SqlCommand cmd = new SqlCommand("DATRetrieveProducts", conn );  cmd.CommandType = CommandType.StoredProcedure;  try  {    conn.Open();    // Generate the reader. CommandBehavior.CloseConnection causes the    // the connection to be closed when the reader object is closed    return( cmd.ExecuteReader( CommandBehavior.CloseConnection ) );  }  catch  {    conn.Close();    throw;  }}// Display the product list using the consoleprivate void DisplayProducts(){  SqlDataReader reader = RetrieveRowsWithDataReader();  try  {    while (reader.Read())    {      Console.WriteLine("{0} {1} {2}",                         reader.GetInt32(0).ToString(),                         reader.GetString(1) );    }  }  finally  {    reader.Close(); // Also closes the connection due to the                    // CommandBehavior enum used when generating the reader  }}

使用 SqlDataReader 检索行

1.

创建一个用来执行存储过程的 SqlCommand 对象,并将其与一个 SqlConnection 对象相关联。

2.

打开连接。

3.

通过调用 SqlCommand 对象的 ExecuteReader 方法创建一个 SqlDataReader 对象。

4.

要从流中读取数据,请调用 SqlDataReader 对象的 Read 方法来检索行,并使用类型化访问器方法(如 GetInt32 和 GetString 方法)来检索列值。

5.

使用完读取器后,请调用其 Close 方法。

如何使用 XmlReader 检索多个行

可以使用 SqlCommand 对象来生成 XmlReader 对象,后者可提供对 XML 数据的基于流的只进访问。命令(通常为存储过程)必须产生基于 XML 的结果集,对于 SQL Server 2000 而言,该结果集通常包含一个带有有效 FOR XML 子句的 SELECT 语句。以下代码片段阐明了该方法:

public void RetrieveAndDisplayRowsWithXmlReader(){  using( SqlConnection conn = new SqlConnection(connectionString) )  {;