C# 从sql适配器生成数据列
是否有一种方法可以使用sql适配器将sql查询结果转换为数据列。我是一个新的数据表。我需要动态构建它,因为我的列名存储在sql表中。我没能找到这个话题。我一直在运行数据行而不是列。grr到目前为止我所建造的。。提前谢谢C# 从sql适配器生成数据列,c#,sql,C#,Sql,是否有一种方法可以使用sql适配器将sql查询结果转换为数据列。我是一个新的数据表。我需要动态构建它,因为我的列名存储在sql表中。我没能找到这个话题。我一直在运行数据行而不是列。grr到目前为止我所建造的。。提前谢谢 string feedcolumns = @"select FeedColumnName from myTable where FeedProcessID = @feedprocessid"; SqlCommand columnscommand = ne
string feedcolumns = @"select FeedColumnName from myTable where FeedProcessID = @feedprocessid";
SqlCommand columnscommand = new SqlCommand(feedcolumns, connUpd);
DataTable dt = new DataTable("datafeed");
foreach(DataColumn dc in dt.Columns)
{
dc = new
dt.Columns.Add(dc);
}
您可以直接从SqlReader填充数据表,无需逐列填充。 我注意到的一件事是,您的SQL语句中有一个从未分配给command对象的参数,因此我将其添加到
string feedcolumns = "select FeedColumnName from myTable where FeedProcessID = @feedprocessid";
DataTable dt = new DataTable("datafeed");
using (SqlConnection connUpd = new SqlConnection("MyConnection")) {
using (SqlCommand columnscommand = new SqlCommand(feedcolumns, connUpd)) {
columnscommand.Parameters.AddWithValue("@feedprocessid", feedprocessid);
connUpd.Open();
var dataReader = columnscommand.ExecuteReader();
dt.Load(dataReader);
}
}
您正在寻找的方法是
DataAdapter.Fill(dt)
。数据表的列
集合将从查询的结果集动态填充。你没有必要自己做那件事。这些列适用于表中的所有行,它们的列索引对应于每行中的字段索引。您还可以通过其列名对行中的每个字段进行寻址:dr.Rows[rowindex][“columnname”]