我在sql中创建了一个有3个字段的表。并添加了一些数据。现在我想通过编码将更多的数据插入到该表中。
如果我单击按钮1,数据将被插入表中。
我试过下面的代码。
我已执行以下给定的查询,但它显示一个错误:
“列'site name'不属于表”
“列'siteid'不属于表”
“列'cluster'不属于表”
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");
}
最佳答案
错误的原因是您试图将一个包含三个字段的DataRow
添加到当前不包含任何DataColumn
s的表中。如果要手动添加,则必须使用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
}