我正在尝试通过在dataGridView(Windows窗体)中编辑它们来更新数据库中的值。但是,在下面的代码中调用SqlDataAdapter.Update()时,它表示我的DataSet为null。我在网上搜索过,发现在GetChanges()之后添加AcceptChanges()对大多数人都有效,但这并没有解决我的错误。
以下是我尝试使用的代码,感谢任何帮助。
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
carHireDataSetBindingSource.EndEdit();
string connectionString = "Data Source=SQLServer;Initial Catalog=CarHire;Integrated Security=True";
string selectCommand = "SELECT * FROM CarHire.dbo.Customer";
SqlConnection con = new SqlConnection(connectionString);
con.Open();
DataSet ds = carHireDataSet.GetChanges();
carHireDataSet.AcceptChanges();
DataAdapter da = new SqlDataAdapter(selectCommand, connectionString);
da.Update(ds);
con.Close();
}
编辑:试过这个,仍然是同样的错误。
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
carHireDataSetBindingSource.EndEdit();
string connectionString = "Data Source=SQLServer;Initial Catalog=CarHire;Integrated Security=True";
string selectCommand = "SELECT * FROM CarHire.dbo.Customer";
SqlConnection con = new SqlConnection(connectionString);
con.Open();
DataTable dt = carHireDataSet.Tables["Customer"].GetChanges();
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.AcceptChanges();
DataAdapter da = new SqlDataAdapter(selectCommand, connectionString);
da.Update(ds);
con.Close();
}
答案 0 :(得分:0)
我认为在用户完成编辑行时执行更新会更好。
将代码从CellEndEdit
事件移至RowValidated
事件。
private void dataGridView1_RowValidated(object sender, DataGridViewCellEventArgs e)
{
//Here place your code to update
}