mysql更新datagridview_c# – 从DataGridView自动更新数据库中的值

在C#项目中,作者遇到一个问题,即无法通过DataGridView正确更新MySQL数据库。他们创建了一个事件处理器以在单元格编辑结束后更新数据库,但更新命令不起作用。代码显示了如何设置数据适配器、数据源和更新命令,包括JOIN查询和参数。作者寻求帮助以解决更新数据库的问题。
摘要由CSDN通过智能技术生成

我正在使用

MySql与C#结合使用项目.

DataGridView的数据由DB中多个表的连接提供.要显示数据我使用以下,工作,代码:

adapter.SelectCommand = new MysqLCommand(

" SELECT" +

" l.lot AS Lot,"+

" m.comment AS Bemerkungen," +

... (multiple columns from different tables) ...

" FROM m " +

" JOIN m2p ON m.m2p_id = m2p.id" +

... (more joins) ...,this._MysqLConnection);

dataGridView1.DataSource = data;

adapter.Fill(data);

现在,GUI的用户可以修改某个列(“注释”列).所以我分配了一个eventHandler到CellEndEdit事件,当用户修改了允许的列的adapter.Update(data)被调用.现在这不执行正确的操作.@H_404_6@

要定义我的update命令,我使用以下代码:@H_404_6@adapter.UpdateCommand = new MysqLCommand(

" UPDATE m" +

" JOIN l ON m.l_id = l.id" +

" SET m.comment = @comment" +

" WHERE l.lot = @lot",this._MysqLConnection);

adapter.UpdateCommand.Parameters.Add("@comment",MysqLDbType.Text,256,"Bemerkungen");

adapter.UpdateCommand.Parameters.Add("@lot","Lot");

你能解释一下我如何修复我的代码来自动更新数据库?@H_404_6@

编辑:

添加进一步的源代码:@H_404_6@private MysqLDataAdapter warenlagerMysqLDataAdapter,kundenMysqLDataAdapter;

private DataTable warenlagerData,kundenData;

private DataGridView warenlagerGridView;

private void updateWarenlagerView(object sender,EventArgs e) {

warenlagerMysqLDataAdapter.Update(warenlagerData);

}

private void initialzeFields() {

warenlagerGridView.CellEndEdit += new DataGridViewCellEventHandler(this.updateWarenlagerView);

warenlagerMysqLDataAdapter = new MysqLDataAdapter();

warenlagerData = new DataTable();

}

private void initializeWarenlagerView() {

warenlagerMysqLDataAdapter.SelectCommand = new MysqLCommand(

" SELECT" +

" c.name AS Ursprung," +

" m2p.art_nr AS ArtNr," +

" m.delivery_date AS Eingangsdatum," +

" CONCAT(FORMAT(m.delivery_amount / 100,2),'kg') AS Eingangsmenge," +

" l.lot AS Lot," +

" m.quality AS Qualität," +

" m.comment AS Bemerkungen," +

" CONCAT(m.units,'kg') AS Units," +

" CONCAT(FORMAT(s.amount / 100,'kg') AS Lagermenge," +

" FORMAT(m.base_price / 100,2) AS Einkaufspreis," +

" FORMAT(s.amount/10000 * m.base_price,2) AS Wert" +

" FROM mushrooms AS m " +

" JOIN mushroom2path AS m2p ON m.mushroom2path_id = m2p.id" +

" JOIN countries AS c ON m.origin_id = c.id" +

" JOIN lots AS l ON m.lot_id = l.id" +

" JOIN stock AS s ON s.mushrooms_id = m.id",this._MysqLConnection);

warenlagerGridView.DataSource = warenlagerData;

warenlagerMysqLDataAdapter.Fill(warenlagerData);

warenlagerMysqLDataAdapter.UpdateCommand = new MysqLCommand(

" UPDATE mushrooms AS m" +

" JOIN lots AS l ON m.lot_id = l.id" +

" SET m.comment = @comment" +

" WHERE l.lot = @lot",this._MysqLConnection);

warenlagerMysqLDataAdapter.UpdateCommand.Parameters.Add("@comment","Bemerkungen");

warenlagerMysqLDataAdapter.UpdateCommand.Parameters.Add("@lot","Lot");

}

这是关于这个问题的整个代码.我100%确定adapter.Update(data)方法被调用(调试).而传递给适配器的数据.Update()方法包含新的数据.@H_404_6@

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值