首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在本机读写accese数据库发生并发冲突,第二个this.oleDbDataAdapter1.Update(。)时发生;该怎么解决

2012-03-03 
在本机读写accese数据库发生并发冲突,第二个this.oleDbDataAdapter1.Update(。。)时发生privatevoidgetstan

在本机读写accese数据库发生并发冲突,第二个this.oleDbDataAdapter1.Update(。。)时发生;
private   void   getstandardall()
{
DataTable   tempDataTable1   =     this.bzjzhbDataTable.Copy();
DataView   viewalltemp1   =   new   DataView(tempDataTable1);

OleDbConnection   myConnectionbzjzhb   =   new   OleDbConnection(oleDbConnection1.ConnectionString);
myConnectionbzjzhb.Open();
OleDbCommand   myCommandbzjzhb   =   new   OleDbCommand( "DELETE   *   FROM   Standardzhb   ",   myConnectionbzjzhb);
                        myCommandbzjzhb.ExecuteNonQuery();

                        myConnectionbzjzhb.Close();
GoldPrinter.ExcelAccess   excel   =   new   GoldPrinter.ExcelAccess();
string   path   =   @ "d:\exb\bzjzhb ";
string   result,getbzjggxj,getbzjjs,getbzjclassfy,getbzjparameter,getbzjnb,getbzjnbjj,getbzjPara;
                        int   findi=1,finefh;

try  
{
string[]   dirs   =   Directory.GetFiles(@ "d:\exb\bzjzhb ");
foreach   (string   dir   in   dirs)  
{

  getbzjnb=dir.Substring(dir.IndexOf( "   ")+1).Substring(0,dir.Substring(dir.IndexOf( "   ")+1).IndexOf( "部 "));//dir.IndexOf( "部 "   )
          excel.Open(dir);
while(findi <500)  
{
getbzjggxj=excel.GetCellText(findi, "D "   );
getbzjjs=excel.GetCellText(findi, "G "   );
if(getbzjggxj.IndexOf( "; ")> 0   ||   getbzjggxj.IndexOf( "; ")> 0)
{
finefh=getbzjggxj.IndexOf( "; ");
getbzjclassfy=getbzjggxj.Substring(0,finefh);
getbzjparameter=getbzjggxj.Substring(finefh+1,getbzjggxj.Length-finefh-1);  
                                                                        getbzjnbjj=getbzjnb+ "= "+getbzjjs;
                                                                        getbzjPara=DeelNumberString(getbzjclassfy);
DataRow   newRow   =   tempDataTable1.NewRow();
newRow[2]   =   getbzjclassfy;
newRow[3]   =   getbzjggxj;
newRow[4]   =   getbzjnb;
newRow[5]   =   getbzjnbjj;
                                                                        newRow[8]=getbzjPara;
newRow[9]   =   getbzjparameter;

newRow[0]   =   Convert.ToInt16(getbzjjs);

tempDataTable1.Rows.Add(newRow);

}
                                              findi=findi+1;


}
                                findi=1;

}
}  
catch   (Exception   e)  
{
Console.WriteLine( "The   process   failed:   {0} ",   e.ToString());
}
this.oleDbDataAdapter1.Update(tempDataTable1);
                        tempDataTable1.AcceptChanges();
                        myConnectionbzjzhb.Close();

                        string   bzjggxh1= " ",bzjggxh2= " ",nbjj5,nbjj6= " ";

string   sqlstr2= "   SELECT   *     FROM   Standardzhb   ";
OleDbConnection   myConnection2   =   new   OleDbConnection(oleDbConnection1.ConnectionString);
OleDbCommand   myCommand2   =   new   OleDbCommand(sqlstr2,   myConnection2);
myConnection2.Open();
OleDbDataReader   myReader2   =   myCommand2.ExecuteReader(CommandBehavior.CloseConnection);

int   k1=0;
while(myReader2.Read())  
{

try
{
bzjggxh1=myReader2.GetString(1).ToString();
                                           

viewalltemp1.RowFilter   =   "ggxh   like   ' "   +     bzjggxh1   +   " ' ";
int   i1=0;
foreach(DataRowView   drv   in   viewalltemp1)
drv[ "nbjj "]   +=   "   new   value ";
}


}
catch(Exception   e)
{
Console.WriteLine(e.ToString());
}
                                nbjj6= " ";
                          k1=k1+1;
}
                        myReader2.Close();

this.oleDbDataAdapter1.Update(tempDataTable1);//这里出现并发冲突
                        tempDataTable1.AcceptChanges();
                        myConnectionbzjzhb.Close();
}

本机一个人用桌面程序竟然并发冲突。
请各位指点迷津,c#我不熟。

[解决办法]
并发冲突在.Net很常见,也不好调整。


49、违反并发性: UpdateCommand影响了预期 1 条记录中的 0 条
必须在提交前DataGridView1.EndEdit 提交后Ds.AcceptChanges() '更新数据集
UpdateCommand和DeleteCommand出现DBConcurrencyException异常。调试提示:违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条;或 违反并发性: UpdateCommand影响了预期 1 条记录中的 0 条。
这里的违反并发性:不是指多人编辑引起的并发。
问题原因:
在插入、更新或删除操作过程中当受影响的行数等于零时由 DataAdapter 引发的异常。
可能的解决方法:
1 检查是否设有主键。
2 DeleteCommand的问题:检查是否含有自动编号字段(自动编号字段会引发此异常);
UpdateCommand的问题:检查更新的字段的原始值是否为空值(原始空值更新时可能会引发此异常)。


==================================================================
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
优惠接单开发,收费带初学者,组件控件定制开发,成品源代码批发
联系方式:Q64180940(请清楚注明业务还是技术咨询) 全天在线


==================================================================

热点排行