HELP::急~并发冲突:UpdateCommand 影响 0 个记录 ~~

q_m 2004-11-08 10:15:45
代码如下:
OleDbDataAdapter da = new OleDbDataAdapter("SelectUser",con);
da.SelectCommand.ComandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add(new OleDbParameter(" @UserName ",OleDbType.VarChar,20,"UserName"));
da.SelectCommand.Parameters[" @UserName "].Value = "testuser";
DataSet ds = new DataSet();
da.Fill(ds,"SignOn");

OleDbCommand updateCommand = new OleDbCommad("UpdateUser",con);
updateCommand.CommandType = CommandType.StoredProcedure;
OleDbParameter workRow = new OleDbParameter(" @UserName ",OleDbType.VarChar,20,"UserName");
workRow.SourceVersion = DataRowVersion.Original;
updateCommand.Parameters.Add(workRow);
updateCommand.Parameters.Add(new OleDbParameter(" @Password ",OleDbType.VarChar,20,"Password"));
da.UpdateCommand = updateCommand;
DataRow row = ds.Tables["SignOn"].Rows[0];
row["Password"] = "new password";
da.update(ds,"SignOn");

如果将其中任何一个存储过程直接用SQL语句就不会出现并发冲突??为什么啊~~请各位大侠帮忙解决~~


...全文
451 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
q_m 2004-11-30
  • 打赏
  • 举报
回复
可以了~~谢谢各位了~~这段代码本来就可以:)
原来错误的代码是这样的~~OleDbDataAdapter da = new OleDbDataAdapter("SelectUser",con);
da.SelectCommand.ComandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add(new OleDbParameter(" @UserName ",OleDbType.VarChar,20,"UserName"));
da.SelectCommand.Parameters[" @UserName "].Value = "testuser";
DataSet ds = new DataSet();
da.Fill(ds,"SignOn");
DataRow row = ds.Tables["SignOn"].Rows[0];
row["Password"] = "new password";

OleDbCommand updateCommand = new OleDbCommad("UpdateUser",con);
updateCommand.CommandType = CommandType.StoredProcedure;
OleDbParameter workRow = new OleDbParameter(" @UserName ",OleDbType.VarChar,20,"UserName");
workRow.SourceVersion = DataRowVersion.Original;
updateCommand.Parameters.Add(workRow);
updateCommand.Parameters.Add(new OleDbParameter(" @Password ",OleDbType.VarChar,20,"Password"));
da.UpdateCommand = updateCommand;

da.update(ds,"SignOn");
q_m 2004-11-29
  • 打赏
  • 举报
回复
表就两个字段username,password~~username是主键
q_m 2004-11-29
  • 打赏
  • 举报
回复
没有自增字段~~~没有用CommandBuilder,就是用自己写的updatecommand啊~~
huguojunsy 2004-11-29
  • 打赏
  • 举报
回复
是否有自增字段?
greennetboy 2004-11-29
  • 打赏
  • 举报
回复
不要用 CommandBuilder,自己写updatecommand试试
q_m 2004-11-29
  • 打赏
  • 举报
回复
ding~~~
q_m 2004-11-27
  • 打赏
  • 举报
回复
... ...
q_m 2004-11-26
  • 打赏
  • 举报
回复
还是不行啊~~就是自己为DataAdapter写一个UpdateCommand了啊~~
取消事务怎么说??
beststone 2004-11-26
  • 打赏
  • 举报
回复
应该使用QQSu35(kaka) 所说的第二个方法。
q_m 2004-11-26
  • 打赏
  • 举报
回复
是指在存储过程中加入begin transaction和commit transaction么??
如果是的话~~我都加上去了也不行啊~~~
exia 2004-11-23
  • 打赏
  • 举报
回复
同意tonybaobao(Tony宝宝)观点!建议版主可以试一下!
q_m 2004-11-23
  • 打赏
  • 举报
回复
..................
q_m 2004-11-23
  • 打赏
  • 举报
回复
up......
ssdjmcj8048 2004-11-22
  • 打赏
  • 举报
回复
adapter有一个属性就是是否忽略并发冲突的错误
q_m 2004-11-22
  • 打赏
  • 举报
回复
ding~~~
q_m 2004-11-19
  • 打赏
  • 举报
回复
主键就是UserName~~
dazhu2 2004-11-19
  • 打赏
  • 举报
回复
up
dazhu2 2004-11-13
  • 打赏
  • 举报
回复
表SignOn的主键是什么,应把主键放到查询语句中如:select 主键,UserName,Password from SignOn where UserName = @UserName 你试一下
QQSu35 2004-11-11
  • 打赏
  • 举报
回复
这个问题很简单,我遇到过的,解决方法有两个:
1.取消事务.
2.不用CommandBuilder类,自己写为DataAdapter写一个UpdateCommand就行了.
q_m 2004-11-10
  • 打赏
  • 举报
回复
顶~~~
加载更多回复(10)

110,537

社区成员

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

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

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