CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

更新数据集却产生并发冲突?请问是什么原因???谢谢!!!

楼主tzhguan(辰雨)2003-08-01 17:44:49 在 .NET技术 / C# 提问

我将DataGrid绑定到一个数据集,该数据集存储的是另外一个数据集合并的内容。!  
  更新两行的内容却产生冲突,这是为什么??!!!  
  谢谢!!! 问题点数:0、回复次数:3Top

1 楼oh_love(小熊)回复于 2003-08-01 17:56:46 得分 0

可能存在关联关系Top

2 楼tzhguan(辰雨)回复于 2003-08-01 18:12:06 得分 0

没有关联关系的!  
  我只是将新添加的内容写到数据集,然后将数据集的内容合并到另外一个数据集(dataGrid的数据源)!  
  谢谢!Top

3 楼gatr()回复于 2003-08-01 23:37:21 得分 0

一定是数据存储有问题,我原来也碰到过,如果第一次存不成功,再保存就有问题,表一定要有主键,下面是我保存数据的代码片断,供参考:  
  //由于大量表是基于多表查询的结果,C#不支持自动保存,但软件实际上只修改了其中一个表的数据  
  //其余表的数据只是显示用,因此,本软件中,另外打开待修改的表,从当前dataset中获取修改的数据,  
  //并填入,然后自动保存一个表即可。  
  public   static   bool   SaveRecord(DataSet   myDataSet,string   strTableName,string   strKeyField)  
  {  
  bool   result=true;  
  DataSet   Xdataset;  
  Xdataset=myDataSet.GetChanges(); //没有改变,自动返回  
  if(Xdataset==null)  
  return   true;  
   
  if(Xdataset!=null)  
  {  
  //添加必要的数据库变量  
  DataSet   tempDataSet;  
  #if   SQLDATABASE     //网络版  
  SqlDataAdapter   tempDataAdapter;  
  SqlCommandBuilder   tempCommandBuilder;  
  #else                         //单机版  
  OleDbDataAdapter   tempDataAdapter;  
  OleDbCommandBuilder   tempCommandBuilder;  
  #endif  
   
  tempDataSet=new   DataSet();  
  //从查询表中获取当前行数据  
  DataRow   row1=Xdataset.Tables[0].Rows[0],row2;  
   
  try  
  {  
  #if   SQLDATABASE  
  tempDataAdapter=new   SqlDataAdapter("select   *   from   "+strTableName+  
  "   where   "+strKeyField+"="+row1[strKeyField],MyTools.ConnectionString);  
  tempCommandBuilder=new   SqlCommandBuilder(tempDataAdapter);  
  #else  
  tempDataAdapter=new   OleDbDataAdapter("select   *   from   "+strTableName+  
  "   where   "+strKeyField+"="+row1[strKeyField],MyTools.ConnectionString);  
  tempCommandBuilder=new   OleDbCommandBuilder(tempDataAdapter);  
  #endif  
   
  tempDataAdapter.Fill(tempDataSet,"temp");  
   
  //得到从数据库中直接获取的当前行  
  if(tempDataSet.Tables["temp"].Rows.Count==0)//添加状态,增加一新行  
  {  
  row2=tempDataSet.Tables["temp"].NewRow();  
  tempDataSet.Tables["temp"].Rows.Add(row2);  
  //自动填写编号  
  int   num=MyTools.GetMaxNum(strTableName,strKeyField);  
  foreach(DataRow   r   in   myDataSet.Tables[strTableName].Rows)  
  {  
  Application.DoEvents();  
  if(r[strKeyField].ToString().Trim()==row1[strKeyField].ToString().Trim())  
  {  
  r[strKeyField]=row1[strKeyField]=num.ToString();  
  break;  
  }  
  }  
  }  
   
  row2=tempDataSet.Tables["temp"].Rows[0];  
   
  //逐一从查询表中将新数据更换到原表中  
  for(int   i=0;i<tempDataSet.Tables["temp"].Columns.Count;i++)  
  {  
  string   strColumnName=tempDataSet.Tables["temp"].Columns[i].Caption.Trim();  
  if(row1[strColumnName].ToString().Trim()=="")  
  row1[strColumnName]=DBNull.Value;  
  if(row2[strColumnName]!=row1[strColumnName])  
  row2[strColumnName]=row1[strColumnName];  
  }  
   
  //保存到数据库中  
  DataSet   tempXDataSet=tempDataSet.GetChanges();  
  tempDataAdapter.Update(tempXDataSet,"temp");  
   
  }  
  catch(Exception   ee)  
  {  
  MessageBox.Show(ee.Message);  
  result=false;  
  }  
   
  }  
  return   result;  
  }Top

相关问题

  • 更新数据时并发冲突,请高手指点
  • 急!并发冲突发生后,如何将当前用户的更新写入数据源?(代码最后处)
  • 一个简单的问题:用dataset更新数据库,怎么老是提示并发冲突 在线等 急用~~
  • 怎样解决FB并发更新数据时的死锁问题 ?
  • 高手救命!并发冲突后如何将用户选择的修改结果写入数据库?
  • 数据更新
  • 数据更新?
  • 更新数据
  • 数据库并发操作!
  • 数据库冲突?

关键词

  • 数据
  • 修改
  • 内容
  • strkeyfield
  • tempcommandbuilder
  • tempdataadapter
  • xdataset
  • 表
  • tempdataset
  • 谢谢

得分解答快速导航

  • 帖主:tzhguan

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo