根据存储过程在运行时更改datatable和tableadapter架构。 C#

时间:2011-09-02 00:17:09

标签: sql-server datatable tableadapter

我在DataSet中有表的DataSet和TableAdapter。问题是TableAdapter使用存储过程来填充DataTable,但返回列的数量可能不同。 如何在运行时更改DataTable的模式以从存储过程中获取所有列?

1 个答案:

答案 0 :(得分:0)

在我看来,放弃使用DataAdapter的想法,完全没必要。这样做是为了获取DataTable:

using(SqlConnection con = new SqlConnection("Conectionstring"))
{
    con.Open();
    using (SqlCommand commnand= new SqlCommand("StoredProcName",con))
    {
             command.CommandType=CommandType.StoredProcedure;
             SqlDataReader reader = command.ExecuteReader();
             DataTable table = new DataTable();
             table.Load(reader);
             return table;
    }
}

现在从proc返回的列数无关紧要,数据表将包含所有列。

编辑:将以下部分添加到<configuration>部分下面的Web.config文件中,替换为您的实际connectionString。您应该可以从“您的设置”文件中复制它。

  

现在按如下方式创建SqlConnection:

SqlConnection con 
= new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))

请注意,“ConnectionString”是Web.Config中连接字符串的name属性。

如果不清楚,请查看另一个example here,