Проблема SQLite.Net с BeginTransaction - PullRequest
10 голосов
/ 15 марта 2010

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

  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();
  } 

Теперь я инициализирую соединение прямо перед этим, используя

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

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

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

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

1 Ответ

20 голосов
/ 15 марта 2010

Возможно, вы объявили и создали экземпляр подключения, но открыли ли вы его?

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

Martin

...