1, 在多个线程中同时用Adapter更新一个DataTable:
tbReferTableAdapter tbAdapter = new tbReferTableAdapter(); tbAdapter.Update(dataSetRefer.tbRefer); //更新到数据库,tbRefer是datatable中的一张表。
遇到如下错误: throws DBConcurrencyException 违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。
在我写的程序中,是因为当用DataSet来更新数据库时,若DataSet对应数据库中数据被其他线程改变,引发DBConcurrencyException.
解决办法如下:
tbReferTableAdapter tbAdapter = new tbReferTableAdapter(); tbAdapter.Update(dataSetRefer.tbRefer); //更新到数据库,tbRefer是datatable中的一张表 tbAdapter.Fill(dataSetRefer.tbRefer); //把内存中的数据和数据库保持一致,解决问题!
2,在把DataRow[] (dr)转换成Datatable(dt)时,出现“该行已经属于另一个表”错误!
for(int i=0;i<dr.Length;i++) { //将数组元素加入表... dt.Rows.Add(dr[i]);//出错提示为:该行已经属于另一个表 }
解决办法如下:
for(int i=0;i<dr.Length;i++) { //将数组元素加入表...dt.Rows.Add(dr[i].ItemArray);//解决问题!
}解决方法