C# 将数据网格视图数据写入 SQL Server 表中

本文关键字:数据 SQL Server 表中 视图 数据网 网格 | 更新日期: 2023-09-27 18:31:43

我在SQL Server数据库中有一个四列表。前三列的信息由另一个来源提供。默认情况下,第 4 列设置为 null。

然后,我有一个带有数据表的 win 窗体,该表使用以下代码填充来自 SQL Server 数据库的信息:

public DataTable populateFormList()
{
    SqlConnection con = new SqlConnection(Properties.Settings.Default.sqlConnectionString);
    SqlCommand cmd = new SqlCommand("SELECT * FROM of_formlist_raw", con);
    con.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    DataTable dt = new DataTable();
    dt.Load(reader);
    return dt;
}
datagridview2.DataSource = populateFormList();
datagridview2.Refresh();

现在,这在获取我的数据时工作正常。

然后,用户可以更改第 4 列中的空值。

如何轻松地将这些更改从数据表写回 SQL Server 表中?

换句话说,一旦屏幕上的数据表具有其他值,我如何将更新的信息存储回最初从中获取信息的 SQL Server 数据库中?

谢谢。

C# 将数据网格视图数据写入 SQL Server 表中

尝试这样的事情,只需传递(DataTable)datagridview2.DataSource作为数据表:

private static void BulkInsertToSQL(DataTable dt, string tableName)
        {
                using (SqlConnection con = new SqlConnection(_DB))
                {
                    SqlBulkCopy sbc = new SqlBulkCopy(con);
                    sbc.DestinationTableName = tableName;
                    //if your DB col names don’t match your data table column names 100%
                    //then relate the source data table column names with the destination DB cols
                    sbc.ColumnMappings.Add("DBAttributeName1", "DTColumnName1");
                    sbc.ColumnMappings.Add("DBAttributeName2", "DTColumnName2");
                    sbc.ColumnMappings.Add("DBAttributeName3", "DTColumnName3");
                    sbc.ColumnMappings.Add("DBAttributeName4", "DTColumnName4");
                    con.Open();
                    sbc.WriteToServer(dt);
                    con.Close();
                }

        }
2 个

选项,带或不带 TableAdapter。

我建议在MSDN for TableAdapter中阅读此内容

他们也在使用BindingSources,这是优秀的组件,易于使用。

如果没有 TableAdapter,请阅读"使用命令对象更新记录"部分。