Я пытаюсь выяснить, как массово вставить несколько записей, используя ODBC (System.Data.Odbc
), как я делал это раньше с ODP.Net (OracleCommand
, OracleConnection
) и параметризованными запросами.
С 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
, но все еще не могу понять, как управлять этим. Кто-нибудь пробовал?