WPF学习笔记(6):DataSet更新后台数据库个别列失败的问题
程序员文章站
2022-09-10 15:07:50
WPF窗体中建有一个DataGrid,运行后修改各行数据,通过Update方法更新后台数据库。发现在数据库中,其中一列FAcctID(文本型)每次都会变为0,还有一列FDebit(货币型)不能更新,其他列则没有问题。主要代码如下: 排查了好几个小时,对Xaml代码绑定、Parameter参数进行修改 ......
wpf窗体中建有一个datagrid,运行后修改各行数据,通过update方法更新后台数据库。发现在数据库中,其中一列facctid(文本型)每次都会变为0,还有一列fdebit(货币型)不能更新,其他列则没有问题。主要代码如下:
oledbcommand cmdupdateacct = new oledbcommand(); cmdupdateacct.connection = conacct; cmdupdateacct.commandtext = "update t_voucher set fdate=@fdate, fexp=@fexp, facctid=@facctid,fdebit=@fdebit, fcredit=@fcredit where fid=@fid";
排查了好几个小时,对xaml代码绑定、parameter参数进行修改,均没有找到问题出在哪里。最后,注释掉该行代码,试着重新写sql语句,一个字段一个字段地进行测试,却再没有出现这个问题。两行代码如下:
从代码编辑器来看,两行代码一模一样。试着比较两行代码,提示不一致。最后粘贴到word中观察,发现@facctid,fdebit=之间的逗号是一个全角逗号,但是在代码编辑器中全角逗号和半角逗号十分相似,没有word中那么明显。
最终原因找到,原来是逗号惹的祸。因为faccid对应的参数本来是【@faccid】,却变成了【@faccid,fdebit】,所以会更新成0;而另一个字段fdebit在sql语句中找不到了(被当成了facctid的参数),自然就不会更新。
在此记载一下,以提醒自己今后注意。
上一篇: java集合架构