我试图弄清楚如何像以前使用ODP.Net( OracleCommand , OracleConnection )和参数化查询一样使用ODBC( System.Data.Odbc )批量插入多个记录。
使用odp.net我在进行一些研究之前就完成了工作,发现完美的东西是:
string query = @"insert into Customer ( surname, firstName, emailAddress) values
(:surname, :firstName, :emailAddress)";
oracleConnection.Open();
using (var command = oracleConnection.CreateCommand())
{
command.CommandText = query;
command.CommandType = CommandType.Text;
command.BindByName = true;
// In order to use ArrayBinding, the ArrayBindCount property
// of OracleCommand object must be set to the number of records to be inserted
command.ArrayBindCount = bulkData.Count;
command.Parameters.Add(":surname", OracleDbType.Varchar2, bulkData.Select(c => c.Surname).ToArray(), ParameterDirection.Input);
command.Parameters.Add(":firstName", OracleDbType.Varchar2, bulkData.Select(c => c.FirstName).ToArray(), ParameterDirection.Input);
command.Parameters.Add(":emailAddress", OracleDbType.Varchar2, bulkData.Select(c => c.EmailAddress).ToArray(), ParameterDirection.Input);
int result = command.ExecuteNonQuery();
if (result == bulkData.Count)
returnValue = true;
}
}
我试图对odbc使用相同的逻辑,并通过command.Parameters.AddWithValue , command.Parameters.Add和command.Parameters.AddRange传递数据,但是在理解如何管理它方面仍然存在问题。 有没有人尝试过?