C# 如何在DataGridView中只更新一行?

C# 如何在DataGridView中只更新一行?,c#,.net,database,datagridview,data-access-layer,C#,.net,Database,Datagridview,Data Access Layer,我有一个从DataTableAdatper填充的DataGridView,如中所示 我猜因为它是ODBC MySQL连接,所以它不会为我生成DBDirectMethods 我的问题是,在用户在网格中编辑了数据库中的特定行之后,如何更新该行?是否需要在适配器中指定DeleteCommand?什么时候调用它?您通常不需要自己创建DeleteCommand、UpdateCommand和InsertCommand:CommandBuilder可以为您完成: private void UpdateCurr

我有一个从DataTableAdatper填充的DataGridView,如中所示

我猜因为它是ODBC MySQL连接,所以它不会为我生成DBDirectMethods


我的问题是,在用户在网格中编辑了数据库中的特定行之后,如何更新该行?是否需要在适配器中指定DeleteCommand?什么时候调用它?

您通常不需要自己创建DeleteCommand、UpdateCommand和InsertCommand:CommandBuilder可以为您完成:

private void UpdateCurrentRow()
{
    DataRowView drv = dataGridView1.CurrentRow.DataBoundItem as DataRowView;
    DataRow[] rowsToUpdate = new DataRow[] { drv.Row };

    OdbcDataAdapter adapter = new OdbcDataAdapter("SELECT * FROM FOO", connection);
    OdbcCommandBuilder builder = new OdbcCommandBuilder(adapter);
    adapter.Update(rowsToUpdate);
}

但是我如何告诉它要更新哪些行呢?网格控件不能这样做吗?(即,确定修改了哪些行,并为它们调用更新?)DataGridView更新其数据源(即,您的案例中的数据集),但您有责任更新数据库以反映数据集中的更改。您还可以对整个DataTable调用adapter.Update,在数据库中只更新修改过的行。