SQLite.Net问题:BeginTransaction出现问题

12

我正在尝试使用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个回答

25
你可能已经声明并实例化了连接对象,但你是否已经打开了它?
我建议先尝试移除事务相关的代码,看看这段代码是否能够正常工作——这会告诉你更多信息...
马丁

我有一些代码,在其中我使用了SQLite的事务,但在我的工作机器上没有。如果我记得的话,今晚我会在我的个人电脑上为你查看... Martin. - Martin Milan
4
我是个白痴,谢谢。在交易部分之前,我已经让一切都运作良好了,我想我忘记了必须打开连接哈哈。 - cam
作为一个同样的村傻瓜,我想补充一点,你需要在调用 BeginTransaction() 之前打开连接。 - McFixit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接