Q:
Мой вопрос состоит из двух частей:
1- Я хочу использовать следующий класс IfxBulkCopy
для вставки большого количества данных, но этот класс не существует в dll IBM.Data.Informix 2.81.0.0
, как исправить эту проблему .?
Примечание: класс существует в IBM.Data.Informix 9.0.0.2
! Но я не могу использовать эту версию, потому что мы используем старую версию informix
.
Когда я использую новую версию, я получаю следующее исключение:
Invalid argument
StackTrace = " at IBM.Data.Informix.IfxConnection.ReplaceConnectionStringParms(String szValue, IfxConnSettings& connSettings)\r\n at IBM.Data.Informix.IfxConnection.set_ConnectionString(String value)\r\n at Common.DBConnectionForInformix..ctor(String ConnectionStr...
Мои .cs:
public static void InsertAsBulk(DataTable dt)
{
using (IfxConnection cn = new IfxConnection(ConfigurationManager.ConnectionStrings["aa"].ToString()))
{
cn.Open();
using (IfxBulkCopy copy = new IfxBulkCopy(cn))
{
copy.ColumnMappings.Add(1, 2);
copy.ColumnMappings.Add(2, 3);
copy.ColumnMappings.Add(3, 4);
copy.ColumnMappings.Add(4, 5);
copy.ColumnMappings.Add(5, 6);
copy.ColumnMappings.Add(6, 7);
copy.DestinationTableName = "schday";
copy.WriteToServer(dt);
}
}
}
2- Использует ли IfxBulkCopy
концепцию транзакции во время операции вставки или может также привести к несогласованности данных.