小编典典

如何使用Datagridview绑定源C#更新SQL Server数据库

sql

我正在用C#编写Winforms应用程序,该应用程序使用户可以使用datagridview编辑和更新数据库。

问题是,我无法使其正常工作。我唯一要实现的就是更新datagridview所显示的内容,但是当我进入数据库表时,数据没有任何变化。我搜索了很多讨论该问题的站点,但对我来说仍然没有任何用处。

到目前为止我尝试过的事情:

  • 将数据库绑定到datagridview
  • Copy to Output Directory属性更改为Copy if newer
  • 使用dataAdapter.Update((DataTable)bindingSource1.DataSource)带有或不带有任何更新查询的execute。
  • 不执行更新查询dataAdapter.update(...)

这是我的代码:

public Form1()
{
    InitializeComponent();
    GetData("SELECT * FROM Table1");
}

void GetData(string selectCommand)
{
    SqlConnection conn = new SqlConnection(Properties.Settings.Default.NewDBTESTConnectionString);

    dataAdapter = new SqlDataAdapter(selectCommand, conn);
    commandBuilder = new SqlCommandBuilder(dataAdapter);

    table = new DataTable();
    dataAdapter.Fill(table);

    bindingSource1.DataSource = table;
    dataGridView1.DataSource = bindingSource1;
}

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
        dataAdapter.Update((DataTable)bindingSource1.DataSource);    
}

阅读 237

收藏
2021-04-07

共1个答案

小编典典

如果不调用bindingSource1.EndEdit基础数据表,则不会看到任何更改,因此Update命令没有任何要更新的内容。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    bindingSource1.EndEdit();
    DataTable dt = (DataTable)bindingSource1.DataSource;

    // Just for test.... Try this with or without the EndEdit....
    DataTable changedTable = dt.GetChanges();
    Console.WriteLine(changedTable.Rows.Count);

    int rowsUpdated = da.Update(dt);    
    Console.WriteLine(rowsUpdated);
}
2021-04-07