0

我想使用 C# 编码将 executereader 读取的行添加到新数据表中

4

2 回答 2

1

制作一个数据表对象,其列与数据读取器的列相同。请看下面的代码。

例如:

DataTable _dt=new DataTable();//public 

void AddColumns()
{
 _dt.Columns.Add(new DataColumn("ID", typeof(int)));
 _dt.Columns.Add(new DataColumn("mark", typeof(int)));
}

因此,在您的数据表中,您有两列 [ID 和标记]。

检索数据

System.Data.SqlClient.SqlDataReader rd=cmd.Execute
Reader();

编写一个添加新行的函数

public void NewRow(DataReader rd)
{
   while(rd.Read())
    {
   DataRow dr=_dt.NewRow();
   dr["ID"]=Convert.toInt32(rd["ID"]);
   dr["Mark"]=Convert.toInt32(rd["Mark"]);
   _dt.Rows.Add(dr)
      }
}

这样您就可以向 dataTable 添加值。

于 2010-11-29T09:56:32.117 回答
1

你的问题有太多的未知数。例如,数据表是有类型的还是无类型的?列类型有哪些?等等。

但无论如何,这是一个普遍的例子。我改编了此处给出的原始示例中的代码

private static void ReadOrderData(string connectionString) { string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;";

using (SqlConnection connection =
           new SqlConnection(connectionString))
{
    SqlCommand command =
        new SqlCommand(queryString, connection);
    connection.Open();

    SqlDataReader reader = command.ExecuteReader();

    // Call Read before accessing data.
    while (reader.Read())
    {
       CustomersRow newCustomersRow = Customers.NewCustomersRow();

       newCustomersRow.CustomerID = reader[0].ToString();
       newCustomersRow.CompanyName = reader[1].ToString();
       dt.Rows.Add(newCustomersRow);
    }

    // Call Close when done reading.
    reader.Close();
}

}

于 2010-11-29T09:53:30.133 回答