我在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添加到当前不包含任何DataColumns的表中。如果要手动添加,则必须使用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
}

10-08 14:42