从datatable更新sql表

时间:2012-04-04 12:09:57

标签: c# sql insert sql-update

使用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栏的数据。

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/