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);//解决问题!