*****使用DataAdapter更新DataSet,但是dataAdapter.update(dataset)后有的字段更新了,有的没有更新,调试发现字段值确实已经改变了,但是却
使用DataAdapter更新DataSet,但是dataAdapter.update(dataset)后有的字段更新了,有的没有更新,调试发现字段值确实已经改变了,但是却没有更新到数据库中.什么原因呢?谢谢 问题点数:20、回复次数:12Top
1 楼gshope(北京.Net)回复于 2003-12-04 13:59:43 得分 4
要在myDataSet.AcceptChanges()之前update
Top
2 楼superch0054(竹君子)回复于 2003-12-04 14:00:45 得分 4
可能你的数据库字段设为只读了吧
贴一下代码!Top
3 楼bobjeey(三十年河东,三十年河西)回复于 2003-12-04 14:08:28 得分 4
1、new SqlCommandBuilder(你的SqlDataAdapter),需要它来创建dataset表中行变化后自动产生s相应的sql语句。
2、内存表必须有主键,而且主键名称必须合法。
3、尽量更新后使用dataset.AcceptChanges(),虽然它是默认的。
做到以上3点,更新数据库是会成功的。Top
4 楼liwubao(自然健康每一天)回复于 2003-12-04 15:02:27 得分 0
谢谢你们的回答.
1.在myDataSet.AcceptChanges()之前update.在update前后我都没有使用AcceptChanges.
2.数据库字段设为只读.没有设置.新增的时候字段都正常,更改的时候,某几个字段不正常.
3.我使用vsIDE中的数据组件自动生成的dDataSet和dataAdapter.生成没有错误.
还有,好像重复测试,没有报告任何错误,但是有时可以,有时不行.
代码如下:
DataRow row=ds.FindBye***();
row.A=20;
DataAdapter.update(ds);
基本这样做的.
谢谢你们的回答!Top
5 楼vipfenghuang(张伟)回复于 2003-12-04 15:26:58 得分 2
OleDbDataAdapter da1 = new OleDbDataAdapter();
da1.InsertCommand = ...
da1.InsertCommand.Connection = conn;
其中得InsertCommand可以为UpdateCommand or DeleteCommand
da1.Update(data);Top
6 楼liwubao(自然健康每一天)回复于 2003-12-04 17:34:05 得分 0
还是不行,请各位高手帮忙啊Top
7 楼liwubao(自然健康每一天)回复于 2003-12-05 09:03:40 得分 0
帮帮我!!!!!谢谢了.
dataAdapter.update(dataset)后有的字段更新了,有的没有更新,调试发现字段值确实已经改变了,但是却没有更新到数据库中Top
8 楼afxucamd(西门吹炭)回复于 2003-12-05 11:04:10 得分 3
把你的UpdateCommand贴出来看看Top
9 楼liwubao(自然健康每一天)回复于 2003-12-05 11:18:27 得分 0
数据库表: 单据1
字段: 单据编号: varchar(50) not null
数量1: decimal(18,2) null
数量2: decimal(18,2) null
使用IDE的数据组件自动生成dataAdapter,dataconnection,dataset
生成dataadapter使用的sql语句:select * from 单据1 where 单据编号=@单据编号
生成没有错误提示.
绑定到textbox1,textbox2,textbox3.
显示正常.
保存按钮 事件
btnSave(..){
this.sqldataadatper.selectcommand.parameter...value=this.textbox1.text;
this.sqldataadapter.fill(this.dataset1);
.... row=this.dataset1.单据1.FindBy单据编号(this.textbox1.text);
row.数量1=Convert.ToDecimal(textbox2.text);(text值正常情况下);
row.数量2=Convert.ToDecimal(textbox3.text);(text值正常情况下);
this.sqldataadapter.update(this.dataset1);
以上为我的代码简况.还需要写什么吗?
谢谢你们的帮助!!!!!
}Top
10 楼afxucamd(西门吹炭)回复于 2003-12-05 12:53:50 得分 3
你只有SelectCommand没有UpdateCommand怎么更新数据库.
Top
11 楼liwubao(自然健康每一天)回复于 2003-12-05 13:02:48 得分 0
updatecommand,deletecommand,selectcommand等等这些在使用IDE数据组件的时候都自动创建了.
谢谢了,不过还是没有解决Top
12 楼liwubao(自然健康每一天)回复于 2003-12-05 13:50:53 得分 0
非常抱歉.
原因找到了,是因为我在操作的表上有触发器,触发器回写了数字.所以实际上是保存正确了,但是触发器又给改回去了.
谢谢各位的回答.
Top




