C#将datagridview数据写入SQL表

我在SQL数据库中有一个四个coloum表。 前三个列的信息由另一个源提供。 coloum 4默认设置为null。

然后,我有一个带有数据表的win表单,该表单使用以下代码填充sql tabase中的信息:

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表中?

换句话说,一旦屏幕上的数据表具有附加值,我怎样才能将更新的信息存储回最初从中获取的SQL数据?

谢谢。

尝试这样的东西,只需传递(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中阅读 TableAdapter

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

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