2010-03-15 6 views
7

Je suis en train d'utiliser la bibliothèque System.Data.Sqlite, et je suis la documentation sur l'optimisation des inserts donc je copier ce code directement de la documentation:SQLite.Net Problème avec 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(); 
    } 

maintenant, j'initialiser le droit de connexion I avant que l'utilisation

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

J'ai une base de données nommée blah, avec les bonnes tables et les valeurs.

Le problème est quand je lance ce code, il dit: « Le fonctionnement est pas valide en raison de l'état actuel de l'objet »

J'ai essayé de changer le code autour de plusieurs fois, et il pointe encore à BeginTransaction . Ce qui donne?

Répondre

15

Vous avez peut-être déclaré et instancié la connexion, mais l'avez-vous ouverte?

La première chose que je voudrais essayer est d'enlever la substance de la transaction, et voir si le code fonctionne réellement - voir ce que vous dit ...

Martin

+0

J'ai un code où je haved transactions utilisées avec SQLite, mais pas sur ma machine de travail. Si je me souviens, je vais jeter un oeil sur ma machine personnelle pour vous ce soir ... Martin. –

+4

Je suis un idiot, merci. Ouais, j'avais tout travaillé avant la transaction, je suppose que j'avais oublié que je devais ouvrir la connexion haha. – cam

+1

Aucun problème matey ... –