2017-09-29 5 views
1

Quand j'écris ce code que je prendsC# accès System.Data.OleDb.OleDbException (0x80040E14): Erreur de syntaxe dans l'instruction UPDATE

System.Data.OleDb.OleDbException (0x80040E14): Erreur de syntaxe dans Instruction UPDATE. un message . (C#, l'accès (SayacGun, SayacToplam sont des nombres entiers et Tarih est dateTime))

OleDbConnection dbBaglanti2 = new OleDbConnection(VTYolu); 
dbBaglanti2.Open(); 
string Ekle2 = "UPDATE Sys_Sayac SET SayacGun = @Gun, SayacToplam = @Toplam, WHERE Tarih = @Tarih"; 
OleDbCommand Komut2 = new OleDbCommand(Ekle2, dbBaglanti2); 
Komut2.Parameters.AddWithValue("@Gun", int.Parse(OkunanGun)); 
Komut2.Parameters.AddWithValue("@Toplam", Convert.ToInt32(OkunanToplam) + 1); 
Komut2.Parameters.AddWithValue("@Tarih", DateTime.Now.ToShortDateString()); 
Komut2.ExecuteNonQuery(); 
dbBaglanti.Close(); 
+0

DateTime.Now contient également les secondes. Très improbable que vous pouvez trouver un disque avec cette condition. Et quand vous transformez une date en une chaîne, tout peut y arriver. aussi que vous mettez à jour les mauvais enregistrements. Utilisez les paramètres de type DateTime et oubliez AddWithValue. – Steve

+0

Si 'tarih' est' DateTime' que de supprimer 'ToShortDateString'. Je dois me souvenir de "dbBaglanti". "Avez-vous ouvert votre baglanti?" –

+0

Pouvez-vous me donner un exemple @Steve. Thansk. – ErdincDonmez

Répondre

3

Vous devez supprimer la virgule "" avant la clause WHERE,

string Ekle2 = "UPDATE Sys_Sayac SET SayacGun = @Gun, SayacToplam = @Toplam WHERE Tarih = @Tarih"; 

Pour en savoir plus information vérifier les détails de la syntaxe de mise à jour here

+0

Après avoir travaillé 18 heures. mon cerveau est mort. Je passe 3 heures pour une virgule ",". Je vais le tuer. Merci beaucoup @ 4D1C70. – ErdincDonmez