我在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表中?
换句话说,一旦屏幕数据表具有附加值,我怎样才能将更新后的信息存储回最初从中获取的数据?
感谢。
答案 0 :(得分:2)
尝试这样的方法,然后将(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();
}
}
答案 1 :(得分:0)
2个选项,包括或不包含TableAdapter。
对于TableAdapter,我建议read this in MSDN
他们也在使用BindingSources,它们是优秀的组件,易于使用。
没有TableAdapter,read this,“使用命令对象更新记录”部分。