我在SQL中创建了一个包含3个字段的表。并添加了一些数据。现在我想通过编码将更多数据插入到该表中。 如果我单击button_1,数据将被插入表格中。 我尝试了以下代码。
我已执行以下给定的查询,但它显示错误: “列'站点名称'不属于表” “列'SiteId'不属于表” “列'群集'不属于表”
protected void Button1_Click(object sender, EventArgs e)
{
string strcon = WebConfigurationManager.ConnectionStrings["insertBulkConnectionString"].ConnectionString;
DataTable dt = new DataTable();
DataRow rowAdded = dt.Rows.Add();
rowAdded.SetField("SiteName", "A");
rowAdded.SetField("State", "B");
rowAdded.SetField("Cluster", "C");
}
答案 0 :(得分:6)
错误的原因是您尝试将包含三个字段的DataRow
添加到目前不包含任何DataColumn
的表格中。如果要手动执行此操作,则必须使用dt.Columns.Add(...)
。
DataTable dt = new DataTable();
dt.Columns.Add("SiteName", typeof(string));
dt.Columns.Add("State", typeof(string));
dt.Columns.Add("Cluster", typeof(string));
dt.Rows.Add("A", "B", "C");
如果表已经填充并且您想手动添加一些行(如评论中所述),则可以使用SetField
仅填充部分列:
DataRow rowAdded = dt.Rows.Add(); // already added at this point with empty fields
rowAdded.SetField("SiteName", "A");
rowAdded.SetField("State", "B");
rowAdded.SetField("Cluster", "C");
如果您想从数据库中填写它,可以使用DataAdapter.Fill(table)
,f.e:
using(var con = new SqlConection(WebConfigurationManager.ConnectionStrings["insertBulkConnectionString"].ConnectionString))
using(var da = new SqlDataAdapter("SELECT * FROM Table ORDER BY Column", con))
{
da.Fill(dt); // you don't need to add the columns or to open the connection
}