列<column name =“”>不属于表</column>

时间:2014-09-12 06:42:25

标签: c# sql asp.net database

我在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");
    }

1 个答案:

答案 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
}