违反并发性????

youmin0 2006-09-14 02:32:03
我想交换两个表中的内容
就是把A表中的某条记录复制到B表中

::DataRow ^newrow=this->MyDataTable_Pass->NewRow();
newrow->default["title"]=this->MyRows_UnPass->default[i]->default["title"];
......
newrow->default["class"]=this->MyRows_UnPass->default[i]->default["class"];
this->MyRows_Pass->Add(newrow);
this->MyAdapter_Pass->Update(this->MyDataTable_Pass);
MyDataTable_Pass->AcceptChanges();

接着我想让B表中的刚转过来的那条记录再复制到A表中(同上面复制一样过程)
出现了这个错误:违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条;
那么解决呢
...全文
749 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

string strConnection = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=d:\lswj;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
OdbcConnection connection = new OdbcConnection(strConnection);
string selectCommand = "SELECT * FROM cgdb2007";
OdbcDataAdapter daInfo = new OdbcDataAdapter(selectCommand, connection);
daInfo.UpdateCommand = new OdbcCommand("update cgdb2007 set hm=? where id =127773 ");
//daInfo.UpdateCommand.Parameters.Add("@id", OdbcType.VarChar).Value ="id";
daInfo.UpdateCommand.Parameters.Add("@hm", OdbcType.VarChar).Value ="hm";
OdbcCommandBuilder scb = new OdbcCommandBuilder(daInfo);
daInfo.InsertCommand = scb.GetInsertCommand();
connection.Open();
DataSet dsnew = new DataSet();
daInfo.Fill(dsnew, "cgdb2007");
DataColumn[] keys = new DataColumn[] { dsnew.Tables[0].Columns["id"] }; //设置表的主键信息
dsnew.Tables[0].PrimaryKey = keys;
daInfo.Update(dsnew, "cgdb2007");
connection.Close();



//把更新条件值直接赋值看能否更新 可以的话说明是 where赋值问题
  • 打赏
  • 举报
回复

string strConnection = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=d:\lswj;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
OdbcConnection connection = new OdbcConnection(strConnection);
string selectCommand = "SELECT * FROM cgdb2007";
OdbcDataAdapter daInfo = new OdbcDataAdapter(selectCommand, connection);
daInfo.UpdateCommand = new OdbcCommand("update cgdb2007 set hm=? where id =127773 ");
//daInfo.UpdateCommand.Parameters.Add("@id", OdbcType.VarChar).Value ="id";
daInfo.UpdateCommand.Parameters.Add("@hm", OdbcType.VarChar).Value ="hm";
OdbcCommandBuilder scb = new OdbcCommandBuilder(daInfo);
daInfo.InsertCommand = scb.GetInsertCommand();
connection.Open();
DataSet dsnew = new DataSet();
daInfo.Fill(dsnew, "cgdb2007");
DataColumn[] keys = new DataColumn[] { dsnew.Tables[0].Columns["id"] }; //设置表的主键信息
dsnew.Tables[0].PrimaryKey = keys;
daInfo.Update(dsnew, "cgdb2007");
connection.Close();
[align=left]
[/align]
  • 打赏
  • 举报
回复
where 赋值问题
rigofree 2006-09-22
  • 打赏
  • 举报
回复

jenycheng 2006-09-21
  • 打赏
  • 举报
回复
N 足鼎立
youmin0 2006-09-19
  • 打赏
  • 举报
回复
我做得是这样的一个审核系统
未审核和审核的后缀分别是_UnPass和_pass

楼上的那个MyRows_UnPass和Myrows_pass类型是DataRowCollection
是读取了数据的DataRowCollection
就是这样了
youmin0 2006-09-18
  • 打赏
  • 举报
回复
对了
每个表都是有个自增主键
zamfox 2006-09-18
  • 打赏
  • 举报
回复
你可以先用sql查询分析器看看是不是数据库的问题
真相重于对错 2006-09-18
  • 打赏
  • 举报
回复
再贴全点代码
::DataRow ^newrow=this->MyDataTable_Pass->NewRow();
newrow->default["title"]=this->MyRows_UnPass->default[i]->default["title"];
......
newrow->default["class"]=this->MyRows_UnPass->default[i]->default["class"];MyRow_UnPass是什么???

this->MyRows_Pass->Add(newrow); //Myrows_pass是什么?
this->MyAdapter_Pass->Update(this->MyDataTable_Pass);
MyDataTable_Pass->AcceptChanges();
bluealarm 2006-09-18
  • 打赏
  • 举报
回复
我也出现了类似问题,不知道怎么回事?
youmin0 2006-09-16
  • 打赏
  • 举报
回复
再UP
分不够继续加
youmin0 2006-09-15
  • 打赏
  • 举报
回复
UP
youmin0 2006-09-14
  • 打赏
  • 举报
回复
UPUP

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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