使用C#.net 4.0和visual studio 2010。
我需要使用在我的代码中生成的表来更新服务器上的表。
我很难搞清楚我需要做什么。
我是否需要更新或是否需要使用和插入创建临时表?或者完全不同的东西。
public void SaveMyWorkI()
{
DataGridViewRowCollection coll = ParetoGrid.Rows;
saveTable.Columns.Add("Part", typeof(string));
saveTable.Columns.Add("Pareto", typeof(string));
foreach (DataGridViewRow item in coll)
{
saveTable.Rows.Add(item.Cells[2].Value, item.Cells[5].Value);
//saveTable.Rows.Add(item.Cells[5].Value);
}
MyErrorGrid.DataSource = saveTable;
//SqlCommand pgINSERT = new SqlCommand("INSERT or UPDATE", conn);
}
更新将部分内部联接。
正如你所看到的那样,我刚刚做了这个,现在我的思绪一片空白。不仅如此,这是小程序的最后一个主要部分。
这是我到目前为止所拥有的:
foreach (DataGridViewRow item in coll)
{
saveTable.Rows.Add(item.Cells[2].Value, item.Cells[5].Value);
part = item.Cells[2].Value.ToString();
pareto = item.Cells[5].Value.ToString();
SqlCommand pgINSERT = new SqlCommand("UPDATE dbo.OldParetoAnalysis SET part = " + part + " , pareto = " + pareto + "", conn);
pgINSERT.ExecuteReader();
//saveTable.Rows.Add(item.Cells[5].Value);
}
我得到的错误是“Invalid column name 'BK177'
”,BK177是我在第1行第1栏的数据。
答案 0 :(得分:1)
所以基本上你有一个包含数据的DataTable,你想在数据库中插入所有内容吗?
您没有说明您正在使用哪个版本的SQL Server,但如果您使用的是2008,则可以使用表值参数类型来将整个表发送到过程。然后你可以在proc上阅读这个表,并做任何你需要做的事情。
参考文献: http://msdn.microsoft.com/en-us/library/bb510489.aspx
http://msdn.microsoft.com/en-us/library/bb675163.aspx
http://blog.sqlauthority.com/2008/08/31/sql-server-table-valued-parameters-in-sql-server-2008/