Question

I'm trying to use System.Data.Sqlite library, and I'm following the documentation about optimizing inserts so I copied this code directly out of the documentation:

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

Now, I initialize I connection right before that by using

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

I have a Database named blah, with the correct tables and values.

The problem is when I run this code, it says "Operation is not valid due to the current state of the object"

I've tried changing the code around several times, and it still points to BeginTransaction. What gives?

Was it helpful?

Solution

You may have declared and instantiated the connection, but have you opened it?

First thing I would try is to remove the transaction stuff, and see if the code actually works - see what that tells you...

Martin

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top