运用参数绑定的形式,对大量数据进行操作,效率很高,但有上限条数需要注意。
Oracle12 C 1048575 以下: 正常结束 1048576 以上: ORA-3146 发生
public void InsertData(OracleConnection con, int count) { try { OracleCommand cmd = new OracleCommand(); string sqlInsert = "INSERT INTO ORACLE_TEST_TABLE (ID,NAME,AGE,MANEY" + ")VALUES(:ID,:NAME,:AGE,:MANEY)"; int length = count; cmd.Connection = con; cmd.CommandText = sqlInsert; cmd.ArrayBindCount = length; int[] idArr = new int[length]; string[] nameArr = new string[length]; string[] ageArr = new string[length]; Decimal[] maneyArr = new Decimal[length]; OracleParameter idParam = new OracleParameter("ID", OracleDbType.Varchar2); idParam.Direction = ParameterDirection.Input; idParam.Value = idArr; cmd.Parameters.Add(idParam); OracleParameter nameParam = new OracleParameter("NAME", OracleDbType.Varchar2); nameParam.Direction = ParameterDirection.Input; nameParam.Value = nameArr; cmd.Parameters.Add(nameParam); OracleParameter ageParam = new OracleParameter("AGE", OracleDbType.Varchar2); ageParam.Direction = ParameterDirection.Input; ageParam.Value = ageArr; cmd.Parameters.Add(ageParam); OracleParameter maneyParam = new OracleParameter("MANEY", OracleDbType.Varchar2); maneyParam.Direction = ParameterDirection.Input; maneyParam.Value = maneyArr; cmd.Parameters.Add(maneyParam); for (int i = 0; i < length; i++) { idArr[i] = i; nameArr[i] = "zhang" + i; ageArr[i] = 20 + i + ""; maneyArr[i] = Convert.ToDecimal(400.5 + i); } int result = cmd.ExecuteNonQuery(); Console.WriteLine("InsertData End"); } catch (Exception ex) { Console.WriteLine("ERR:" + ex); throw new Exception("Insert ERR:" + ex); } }