datagridview 绑定强类型dataset,删除问题

xkx2003 2009-11-25 04:43:54
datagridview 绑定强类型dataset,打开窗口时候,从数据库load数据,显示到datagridview 中,
删除数据,保存,正确;
这时新添加几行数据,保存,正确(在数据库中能看到新添加的数据)

这时候,再删除新添加的数据,就报错
违反并发性: DeleteCommand 影响了预期1 条记录中的0 条;

反复试验了几次,感觉:只要删除不是从数据库load的数据,就出错。
不知道什么原因?
...全文
169 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzsh0622 2009-11-26
  • 打赏
  • 举报
回复
问题一定在主键的处理上,新加记录的主键值,要让DataSet和数据库中的主键值始终保持一致和唯一。
liherun 2009-11-26
  • 打赏
  • 举报
回复
关注
jnshijin 2009-11-25
  • 打赏
  • 举报
回复
先在删除datagridview,然后再更新数据库 dataAdapter的update方法.
qldsrx 2009-11-25
  • 打赏
  • 举报
回复
删除一般是根据主键来删除的(除非自己定义删除SQL语句),那么如果你的那个列是自增长列,插入到数据库后必须重新查询填充DataSet,否则该行的主键值和数据库中的不对应,无法进行更新或者删除。
zcl24 2009-11-25
  • 打赏
  • 举报
回复
是否是DataSet删除方法有问题?
xkx2003 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 rehuo 的回复:]
如果你是sql server 的话,可以从sql server 的事件跟踪器里面看一下删除语句是怎么执行的,应该是你datagridview的设置问题,你可以自己组合一下删除语句,然后试试
[/Quote]
datagridview没有什么特别的设置,就是在DataSource中指定dataset,然后在DataMember中指定了dataset中的datatable
rehuo 2009-11-25
  • 打赏
  • 举报
回复
如果你是sql server 的话,可以从sql server 的事件跟踪器里面看一下删除语句是怎么执行的,应该是你datagridview的设置问题,你可以自己组合一下删除语句,然后试试
xkx2003 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 surlew 的回复:]
引用 4 楼 xkx2003 的回复:
引用 2 楼 surlew 的回复:
你将你保存过后的数据重新加载到你的dataset里面没有

不想这么操作,数据量大的话,反复读取数据库,会给数据库造成压力


好像用DeleteCommand操作的话就会可能因为你dataset里面没有数据的原因哦

你可以独立做一个删除功能呀,删除直接写sql语句来删除数据库里面的,不用DeleteCommand 来操作
[/Quote]

上千条数据,只能使用dataAdapter的update功能,写sql从数据库里面删不太现实
surlew 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xkx2003 的回复:]
引用 2 楼 surlew 的回复:
你将你保存过后的数据重新加载到你的dataset里面没有

不想这么操作,数据量大的话,反复读取数据库,会给数据库造成压力
[/Quote]

好像用DeleteCommand操作的话就会可能因为你dataset里面没有数据的原因哦

你可以独立做一个删除功能呀,删除直接写sql语句来删除数据库里面的,不用DeleteCommand 来操作
xkx2003 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 rehuo 的回复:]
是不是事务没有提交?应该是datagridview的设置问题,数据库本身不会有这样的问题,还有可能是删除数据的时候,没有办法确定唯一行。就是说删除的时候没有主键
[/Quote]

有主键的,窗口打开,load一些数据到datagridview中,这时候删除,保存,正确。
就对一个表来说,使用不使用事务都一样了。
xkx2003 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 surlew 的回复:]
你将你保存过后的数据重新加载到你的dataset里面没有
[/Quote]
不想这么操作,数据量大的话,反复读取数据库,会给数据库造成压力
rehuo 2009-11-25
  • 打赏
  • 举报
回复
是不是事务没有提交?应该是datagridview的设置问题,数据库本身不会有这样的问题,还有可能是删除数据的时候,没有办法确定唯一行。就是说删除的时候没有主键
surlew 2009-11-25
  • 打赏
  • 举报
回复
你将你保存过后的数据重新加载到你的dataset里面没有
liherun 2009-11-25
  • 打赏
  • 举报
回复
mark

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧