2010-03-15 7 views
7

Ich versuche System.Data.SQLite Bibliothek zu verwenden, und ich bin nach der Dokumentation über Einsätze zu optimieren so kopierte ich diesen Code direkt aus der Dokumentation:SQLite.Net Ausgabe Mit Begintrans

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

nun initialisieren ich I-Anschluss direkt vor, dass durch

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

ich eine Datenbank mit dem Namen blah habe, mit den richtigen Tabellen und Werten.

Das Problem ist, wenn ich diesen Code ausführen, heißt es „Operation aufgrund des aktuellen Status des Objekts nicht gültig ist“

Ich habe versucht, den Code um mehrmals zu ändern, und es immer noch auf Begintrans . Was gibt?

Antwort

15

Sie haben die Verbindung möglicherweise deklariert und instanziiert, aber haben Sie sie geöffnet?

Das erste, was ich versuchen würde, ist die Transaktion Sachen zu entfernen, und sehen, ob der Code tatsächlich funktioniert - sehen, was das sagt ...

Martin

+0

ich einige Code, wo ich verwendet, um Transaktionen mit haved SQLite, aber nicht auf meiner Arbeitsmaschine. Wenn ich mich erinnern kann, werde ich heute Nacht einen Blick auf meine persönliche Maschine werfen ... Martin. –

+4

Ich bin ein Idiot, danke. Ja, ich hatte alles vor dem Transaktions-Zeug, ich denke, ich vergaß, dass ich die Verbindung öffnen musste, haha. – cam

+1

Kein Problem ... –

Verwandte Themen