2010-03-15 17 views
7

Estoy tratando de utilizar la biblioteca System.Data.Sqlite, y estoy siguiendo la documentación acerca de la optimización insertos así que copiar el código directamente de la documentación:SQLite.Net Con 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(); 
    } 

ahora, lo cierto inicializar la conexión antes de que mediante el uso

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

tengo una base de datos llamada bla, con las tablas y los valores correctos.

El problema es cuando ejecuta este código, se dice "Operación no es válida debido al estado actual del objeto"

He intentado cambiar el código en torno a varias veces, y todavía apunta a BeginTransaction . ¿Lo que da?

Respuesta

15

Puede haber declarado y crear una instancia de la conexión, pero ¿la ha abierto?

Lo primero que me gustaría tratar es eliminar la materia de transacciones, y ver si realmente funciona el código - ver lo que te dice ...

Martin

+0

Tengo algo de código en el que haved transacciones utilizadas con SQLite, pero no en mi máquina de trabajos. Si recuerdo, echaré un vistazo en mi máquina personal esta noche ... Martin. –

+4

Soy un idiota, gracias. Sí, tenía todo funcionando antes de las transacciones, supongo que olvidé que tenía que abrir la conexión jaja. – cam

+1

No hay problema ... –

Cuestiones relacionadas