//上面是生成动态inset语句    string insertSQL = builder1.ToString() + builder2.ToString() + builder3.ToString() + ")";    OracleCommand cmd = new OracleCommand(insertSQL, OracleCon);
    cmd.ExecuteNonQuery();我现在是动态生成1条insert语句,然后再一条一条提交,因为我现在要插入几万行的数据,所以这种方式有点慢,请问大家怎么才能让它1000行提交执行一次啊,就像PL/SQL中是100行commit一次一样

解决方案 »

  1.   

    我想是不是可以改变一种做法
    比如说把你插入的所有内容存在一个datatable中,然后直接将datatable一次更新保存
      

  2.   

    用下面的方法可以实现批量更新
    public int UpdateByDataSet(DataSet ds,string strTblName,string strConnection)
    {
    SqlConnection conn = new SqlConnection(strConnection));
       
       SqlDataAdapter myAdapter = new SqlDataAdapter();
       SqlCommand myCommand = new SqlCommand('select * from '+strTblName),(SqlConnection)this.conn); 
       myAdapter.SelectCommand = myCommand;
       SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter); 
       myAdapter.Update(ds,strTblName); 
    }
      

  3.   

    OracleTrans OT = OracleConn.BeginTrans();
    try
    {
    OracleCommand.Trans = OT;
    for(int i = 0; i < 1000; i++)
    {
    OracleCommand.CommandText = "INSERT INTO TABLEA() VALUES()";
    OracleCommand.ExecuteNO();
    }
    OT.COMMIT;
    }
    catch{
    OT.ROLLBACK;
    }
      

  4.   

    我是知道用事物提交,可是不知道我这种动态拼出的insert语句怎么写事物操作
      

  5.   

    你在循环以前开事务,等所有的循环都执行完成,在最后commit
    这样的操作和动态拼出来的sql没有什么联系