2010-03-15 2 views
7

Я пытаюсь использовать библиотеку System.Data.Sqlite, и я отслеживаю документацию об оптимизации вставки, так что я скопировал этот код непосредственно из документации:SQLite.Net Issue С BeginTransaction

using (SQLiteTransaction mytransaction = myconnection.BeginTransaction()) 
    { 
    using (SQLiteCommand mycommand = new SQLiteCommand(myconnection)) 
    { 
     SQLiteParameter myparam = new SQLiteParameter(); 
     int n; 

     mycommand.CommandText = "INSERT INTO [MyTable] ([MyId]) VALUES(?)"; 
     mycommand.Parameters.Add(myparam); 

     for (n = 0; n < 100000; n ++) 
     { 
     myparam.Value = n + 1; 
     mycommand.ExecuteNonQuery(); 
     } 
    } 
    mytransaction.Commit(); 
    } 

Теперь я инициализировать I право подключения до этого с помощью

SqlConnection myconnection = new SqlConnection("Data Source=blah"); 

у меня есть база данных с именем мля, с правильными таблицами и значениями.

Проблема заключается в том, когда я запускаю этот код, он говорит: «Операция недопустима из-за текущего состояния объекта»

Я попытался изменить код вокруг несколько раз, и он по-прежнему указывает на BeginTransaction , Что дает?

ответ

15

Возможно, вы указали и создали соединение, но вы его открыли?

Первое, что я хотел бы попробовать, чтобы удалить материал транзакции, и посмотреть, если код на самом деле работает - посмотреть, что говорит вам ...

Martin

+0

У меня есть некоторый код, где я haved используемые операции с SQLite, но не на моей машине. Если я помню, я посмотрю на свою личную машину для вас сегодня вечером ... Martin. –

+4

Я идиот, спасибо. да, у меня было все, что работало перед транзакционным материалом, наверное, я забыл, что мне нужно было открыть соединение ха-ха. – cam

+1

No prob matey ... –