从 WPF 数据网格中的数据集更新数据库

Posted

技术标签:

【中文标题】从 WPF 数据网格中的数据集更新数据库【英文标题】:Updating database from dataset in WPF datagrid 【发布时间】:2016-12-09 18:51:08 【问题描述】:

我已经阅读了所有类似的主题,并且我认为我复制了示例,但代码仍然无法正常工作

绑定网格:

sql="select * from myTable";
ds = new System.Data.DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter(sql,dbConnection._connection);   
adp.Fill(ds);
ds.AcceptChanges();
grdTable.ItemsSource = ds.Tables[0].DefaultView;

保存数据(为简单起见,在此处双击,可以在按钮单击时)

private void grdTable_DoubleClick(object sender, MouseButtonEventArgs e)

  adp.Update(ds.Tables[0]);
 

数据显示正常,但更新语句报错: “当传递带有修改行的 DataRow 集合时,更新需要有效的 UpdateCommand。”

我看到的所有示例都不需要创建 UpdateCommand。

【问题讨论】:

【参考方案1】:

您需要使用自动为您生成命令的 OleDbCommandBuilder:https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommandbuilder(v=vs.110).aspx

sql = "select * from myTable";
ds = new System.Data.DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.SelectCommand = new OleDbCommand(sql, dbConnection._connection);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adp);
adp.Fill(ds);
ds.AcceptChanges();
grdTable.ItemsSource = ds.Tables[0].DefaultView;

有关详细信息,请参阅上面的 MSDN 链接。

【讨论】:

以上是关于从 WPF 数据网格中的数据集更新数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 WPF 数据网格更新 SQL 数据库表

使用实体框架核心模型时 WPF 数据网格未更新

如何重新加载 WPF 网格

使用可观察对象使用数据库中的数据绑定更新数据网格

DataGrid 数据绑定/更新中的 WPF 组合框不起作用

WPF XAML - 将数据网格列绑定到外键(数据集)