各位DX请进: 自己编写deletecommand语句,更新数据库的问题

dazhu2 2004-09-24 10:07:36
win form程序
我有数据库A,表为TABLE;字段为:
ID(自动编号),name(文本,20), tel(文本,20), jg(文本,50),

…….
Mycnn.open();
Dataset mys=new dataset();
Myada.fill(mys,”one”);
Datatable mytable=mys.tables[“one”];
foreach( DataRow row in myTable.Rows )
{
if(row[3]==”江苏”)
row.delete();
}

OleDbCommand mycmd=new OleDbCommand("delete * from table where jg=@a",mycnn);
mycmd.Parameters.Add("@a",System.Data.OleDb.OleDbType.varchar,50,"jg");
myada.updata(mys,”one”);
程序运行后提示:
“并发冲突,delete command影响0个记录!!“
但查看数据库,符合条件(jg=”江苏”)的记录已经删除!!

如果符合条件的记录只有一条,程序也运行正常,没有任何错误提示,数据库能成功更新!Why????

郁闷!!郁闷!!

我于是修改了mycmd,加了个ID参数
OleDbCommand mycmd=new OleDbCommand("delete * from table where jg=@a and ID=@b",mycnn);
mycmd.Parameters.Add("@a",System.Data.OleDb.OleDbType.varchar,50,"jg");
mycmd.Parameters.Add("@b",System.Data.OleDb.OleDbType.integer,0,"ID");
myada.updata(mys,”one”);
程序运行正常!!,没有任何错误提示!数据库能成功更新!
各位DX,请问什么原因?
该如何写Delete command语句??
...全文
123 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dazhu2 2004-09-24
  • 打赏
  • 举报
回复
我没有使用commandbuilder
yao20047 2004-09-24
  • 打赏
  • 举报
回复
因为你删了两次同意一条记录,适配器也就是myada会根据dataset自动创建删除语句,你为什么还要写Delete呢,你还是不明白适配器的用法。
penning 2004-09-24
  • 打赏
  • 举报
回复
你先把你删除的语句在数据库里试试能不能执行
ArEoN 2004-09-24
  • 打赏
  • 举报
回复
是因为你后面的command添加了主键条件,从而不会产生并发冲突。
kerlw 2004-09-24
  • 打赏
  • 举报
回复
delete不用带* 直接就是delete from
dazhu2 2004-09-24
  • 打赏
  • 举报
回复
各位看一下

110,567

社区成员

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

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

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