C# 列<;列名>;不属于表

C# 列<;列名>;不属于表,c#,sql,asp.net,database,C#,Sql,Asp.net,Database,我在SQL中创建了一个包含3个字段的表。并添加了一些数据。现在我想通过编码向该表中插入更多数据。 如果我单击按钮1,数据将插入表中。 我尝试了下面给出的代码 我已经执行了下面给定的查询,但它显示了一个错误: “列“站点名称”不属于表” “列'SiteId'不属于表” “列“Cluster”不属于表” 出现错误的原因是,您试图将包含三个字段的DataRow添加到当前不包含任何DataColumns的表中。如果要手动执行此操作,必须使用dt.Columns.Add(…) DataTable dt =

我在SQL中创建了一个包含3个字段的表。并添加了一些数据。现在我想通过编码向该表中插入更多数据。 如果我单击按钮1,数据将插入表中。 我尝试了下面给出的代码

我已经执行了下面给定的查询,但它显示了一个错误: “列“站点名称”不属于表” “列'SiteId'不属于表” “列“Cluster”不属于表”


出现错误的原因是,您试图将包含三个字段的
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(表)
,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
}

您必须打开连接,使用所需参数编写查询,执行查询,然后将其插入。只需使用c#在google
中将数据插入sql,您将拥有数千个有用的链接。您应该可以找到一个关于如何使用数据库的好教程。实际上,我的表已经包含了一些值,这些值是我在sql中手动输入的。现在我想通过单击一个按钮将一些数据输入到同一个表中。那么,如何将值插入该表?@vipintp:该表包含哪些列?我已经编辑了我的答案,以显示如何只修改部分列。下面给出了字段。站点名称、状态、,Cluster@vipintp:列不属于该表,错误消息非常具有描述性,我在回答中也提到了它。不清楚你到底想做什么。“我的表已经包含一些值”您指的是哪个表,指的是
DataTable
或数据库中的表。不要将
DataTable
与db表混淆,它只是一个类似于列表或数组的内存集合。我已经执行了u给我的代码,但它显示了另一个错误,即列名不属于该表。
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
}