2009-12-04 7 views
0

je le bloc de code suivantSQLite pas insérer dans

SQLiteConnection cnn = new SQLiteConnection("Data Source=" + getDBPath()); 
cnn.Open(); 
SQLiteCommand mycommand = new SQLiteCommand(cnn); 
string values = "'" + this.section + "','" + this.exception + "','" + this.dateTimeString + "'"; 
string sql = @"INSERT INTO Emails_Pending (Section,Message,Date_Time) values (" + values + ")"; 
mycommand.CommandText = sql; 
mycommand.ExecuteNonQuery(); 
cnn.Close(); 

Quand je l'exécute, rien ne se passe, aucune erreur ne produit, mais rien n'est inséré, ce que je fais mal?

Le chemin vers la base de données est correct! Insérer des œuvres de déclaration, il a essayé dans une interface graphique SqlLite (aucun problème)

Voici le SQL Snippet:

"INSERT INTO Emails_Pending (Section,Message,Date_Time) values ('Downloading Received Messages','Object reference not set to an instance of an object.','04.12.2009 11:09:49');" 

Répondre

0

Que diriez-vous d'ajouter Commit avant Fermer

mycommand.Transaction.Commit(); 
+1

La référence d'objet n'est pas définie sur une instance d'un objet, je suppose que je n'utilise pas de transaction. –

0

Vous devriez toujours utiliser transactions et instructions paramétrées lors de l'utilisation de sqlite, sinon les performances seront très lentes.

Lire ici: Improve INSERT-per-second performance of SQLite?

Votre approche est vulnérable à l'injection sql aussi. Un message dans un email peut avoir un morceau de sql dans son corps et votre code va exécuter ce morceau de sql. Vous pouvez également rencontrer des problèmes lorsque le message dans vos valeurs de chaîne contient un "ou un"

Questions connexes