C#批量插入数据Oracle

C#使用ArrayBindCount批量插入数据到Oracle数据库

实测插入2000条数据可以达到秒级别的插入。

 var recordCount = dtDetail.Rows.Count;
 using (var cmd = new OracleCommand())
 {
     cmd.CommandText = @"insert into WIP_PRESSFITTING_DETAIL(Pressure,Shift,delayed,Curvenumber,Main_Id) 
 values(:Pressure,:Shift,:delayedT,:Curvenumber,:Main_Id)";
     cmd.ArrayBindCount = recordCount;
     var Pressure = new decimal[recordCount];
     var Shift = new decimal[recordCount];
     var delayedT = new decimal[recordCount];
     var Curvenumber = new decimal[recordCount];
     var Main_Id = new int[recordCount];

     cmd.Parameters.Add(new OracleParameter("Pressure", OracleDbType.Decimal, Pressure, ParameterDirection.Input));
     cmd.Parameters.Add(new OracleParameter("Shift", OracleDbType.Decimal, Shift, ParameterDirection.Input));
     cmd.Parameters.Add(new OracleParameter("delayedT", OracleDbType.Decimal, delayedT, ParameterDirection.Input));
     cmd.Parameters.Add(new OracleParameter("Curvenumber", OracleDbType.Decimal, Curvenumber, ParameterDirection.Input));
     cmd.Parameters.Add(new OracleParameter("Main_Id", OracleDbType.Int32, Main_Id, ParameterDirection.Input));



     for (int i = 0; i < dtDetail.Rows.Count; i++)
     {

         Pressure[i] = decimal.Parse(dtDetail.Rows[i]["压力"].ToString());
         Shift[i] = decimal.Parse(dtDetail.Rows[i]["位移"].ToString());
         delayedT[i] = decimal.Parse(dtDetail.Rows[i]["延时"].ToString());
         Curvenumber[i] = decimal.Parse(dtDetail.Rows[i]["曲线号"].ToString());
         Main_Id[i] = currentMainID;
     }


     using (OracleConnection conn = OracleHelpher.DbConn(ref message, ref re, connectString))
     {
         if (conn == null)
         {
             return;
         }
         conn.Open();
         cmd.Connection = conn;
         var count = cmd.ExecuteNonQuery();
     }
 }
posted @ 2026-01-09 14:04  我本梁人  阅读(7)  评论(0)    收藏  举报