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