我发现用OracleDataAdapter.Update()能同时更新多条记录  但好象不能更新多主键的记录而且定义了primaryKey也不行    请问各位大侠有什么好方法吗?我是往组步骤表中插入记录的
数据库结构中grpno和stepno为主键
当前数据库中有二条记录  我在中间插入一条记录 并将他们的stepno由1-3重新设置一遍部分关键代码:
myDataset = myData.getds("select * from red_c_grpstep where grp_no = "+Session["Grpno"].ToString());
DataTable table;
table = myDataset.Tables[0];
table.TableName="red_c_grpstep";
DataRow row;
row  = table.NewRow();
string strstepno="";
strstepno = myData.getItem("select to_char(nvl(max(step_no),0)+1) from red_c_grpstep where grp_no = "+Session["Grpno"].ToString());row["STEP_NAME"] = this.txtstepname.Text.ToString().Trim();table.Rows.InsertAt(row,1);for(int i=1;i<=table.Rows.Count;i++)
{
table.Rows[i-1]["GRP_NO"] = Session["Grpno"].ToString();
table.Rows[i-1]["STEP_NO"] = i;
}editDb2(myDataset,"select * from red_c_grpstep","red_c_grpstep");
public int editDb2(DataSet myDataSet,string strSql,string strTable)
{
DataSet newData = new DataSet();
 
OracleDataAdapter myAda = new OracleDataAdapter(strSql,this.myConnection);
OracleCommandBuilder myBuilder = new OracleCommandBuilder(myAda);
myAda.Fill(newData,strTable);
newData = myDataSet;

//newData.Tables[0].PrimaryKey=new DataColumn[]{newData.Tables[0].Columns["GRP_NO"],newData.Tables[0].Columns["STEP_NO"]};
int intCount = myAda.Update(newData,strTable);
return intCount; }最好不要挨条记录更新,因为后面还有许多地方要用到这种情况 

解决方案 »

  1.   

    OracleCommandBuilder如果不能工作的话可以单独给DataAdapter设定UpdateCommand和InsertCommand,Update会调用相应的command
      

  2.   

    to fancyf(凡瑞) :我执行单条记录更新的话没问题 如果是多条记录同时更新则发生违反数据库唯一约定的异常错误
      

  3.   

    你单条不问题,你可以做过循环呀,分解一下
    多条不行应该是还没有提交,所以数据增量还没有执行。oracle在其sql plus中写sql时,你就可以感觉到,
    不提交一下,你删除的数据在其它地方去一看,竟然还在
      

  4.   

    你单条不是没问题吗,所以你可以做过循环呀,分解一下
    多条不行应该是还没有提交,所以数据增量还没有执行。oracle在其sql plus中写sql时,你就可以感觉到,
    不提交一下,你删除的数据在其它地方去一看,竟然还在