关闭连接我试过了,不行。
我操作另外的表又可以。我开始怀疑表有问题,但我将表的其它记录都删除了,只剩一条,还是报并发冲突。我就不知道是什么原因了。源代码如下:
//代码库
OleDbData hndm = new OleDbData();
hndm.setConnection (this.getPath ()+"\\hndm.dbf",DataType.Vfp);
hndm.setSelectCommand ("select distinct dwmq4,dwdm4 from hndm");
OleDbDataAdapter da1 = hndm.getDataAdapter();

//分层抽样库
OleDbData qedc = new OleDbData();
qedc.setConnection (this.getPath ()+"\\conqedc.dbf",DataType.Vfp);
qedc.setSelectCommand ("select qedc_id,xjdm,ztdm,a1,a2,a3,a5 from conqedc"); //分层抽样库更新参数
ArrayList parameterCollection = new ArrayList ();
parameterCollection.Add(new OleDbParameter("@qedc_id",OleDbType.VarChar,16,"qedc_id"));
parameterCollection.Add (new OleDbParameter("@a1",OleDbType.VarChar,3,"a1"));
parameterCollection.Add (new OleDbParameter("@Original_qedc_id",OleDbType.VarChar,14,ParameterDirection.Input,false,((Byte)(0)),((Byte)(0)),"qedc_id",DataRowVersion.Original,null));
qedc.setUpdateCommand ("update conqedc set qedc_id=?,a1=? where (qedc_id=?)",parameterCollection);
OleDbDataAdapter da2 = qedc.getDataAdapter(); da2.ContinueUpdateOnError = true;//出错时强制继续更新 //DataSet
DataSet ds = new DataSet();
da1.Fill(ds,"hndm");
da2.Fill(ds,"conqedc");
ds.EnforceConstraints = false; //设置代码库与分层抽样库的父子关系,为一对多关系(单字段关联)
DataRelation dr = ds.Relations.Add("hndmqedc",ds.Tables["hndm"].Columns["dwmq4"],ds.Tables["conqedc"].Columns["a2"]); //修改DataSet中分层抽样库乡代码及ID号。
this.status.Text = "开始转换分层抽样库。";
foreach (DataRow parentRow in dr.ParentTable.Rows)
{
foreach(DataRow childRow in parentRow.GetChildRows("hndmqedc"))
{
//更改乡代码
childRow["a1"] = parentRow["dwdm4"];
//更改小班ID号
childRow["qedc_id"] = childRow["xjdm"].ToString() + childRow["ztdm"].ToString() + childRow["a1"].ToString() + childRow["a3"].ToString().Trim().PadLeft(3,'0') + childRow["a5"].ToString();//"43072101201001H3";
}
} //更新分层抽样库表记录
this.status.Text = "请稍后,正在保存数据……";
da2.Update(ds,"conqedc");
this.status.Text = "分层抽样数据转换完成。";

解决方案 »

  1.   

    da2.Update(ds,"conqedc");
    到目前为止,还不能对多个数据表更新,希望在.net 2005 中有改进
      

  2.   

    在你所有的Select 语句后面加上一个关键字:
    例如["select distinct dwmq4,dwdm4 from hndm With (NoLock)"]
        ("select qedc_id,xjdm,ztdm,a1,a2,a3,a5 from conqedc With (NoLock)")
      

  3.   

    下面作法还是不行。连数据都检索不出来了。在你所有的Select 语句后面加上一个关键字:
    例如["select distinct dwmq4,dwdm4 from hndm With (NoLock)"]
        ("select qedc_id,xjdm,ztdm,a1,a2,a3,a5 from conqedc With (NoLock)")
      

  4.   

    不要用NoLock,NoLock会出现脏读