2013-07-30 3 views
2

Вот код, я выполнение:OracleBulkCopy не вставляет записи в таблицу

public static void Main(string[] args) 
{ 
    var connectionString = "Data Source=dbname;User Id=usrname;Password=pass;"; 
    DataTable dt = new DataTable("BULK_INSERT_TEST"); 
    dt.Columns.Add("N", typeof(double)); 
    var row = dt.NewRow(); 
    row["N"] = 1; 
    using (var connection = new OracleConnection(connectionString)){ 
     connection.Open(); 
     using(var bulkCopy = new OracleBulkCopy(connection, OracleBulkCopyOptions.UseInternalTransaction)) 
     { 
      bulkCopy.DestinationTableName = dt.TableName; 
      bulkCopy.WriteToServer(dt); 
     } 
    } 

    using (var connection = new OracleConnection(connectionString)){ 
     connection.Open(); 
     var command = new OracleCommand("select count(*) from BULK_INSERT_TEST", connection); 
     var res = command.ExecuteScalar(); 
     Console.WriteLine(res); // Here I'm getting 0 
    } 
} 

Он использует OracleBulkCopy для вставки 1 записи в таблицу, а затем он подсчитывает строки в таблице. Почему я получаю 0 строк? Вот структура таблицы:

-- Create table 
create table BULK_INSERT_TEST 
(
    n NUMBER 
) 

ответ

5

Вы фактически не добавили строку в таблицу. Вы использовали таблицу для создания новой строки с правильными столбцами, но фактически не добавили ее в таблицу. Вам нужно:

dt.Rows.Add(row); 

(до первого using заявления, в основном)

+0

Упс ... Глупая ошибка и глупый вопрос. благодаря – StuffHappens

Смежные вопросы