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();
}
}

浙公网安备 33010602011771号