2017-05-08 2 views
0

Ich habe eine Tabelle in SQLite, wo ich einige der Spalten aktualisieren möchten. Hier ist meine Frage:Android SQLite Update Abfrage Fehler

String UPDATE_INFORMATION = "UPDATE " + TABLE_USER + " SET " 
      + KEY_ADDRESS_OF_LIVING + " = " + addressOfLiving + ", " 
      + KEY_PHONE + " = " + phoneNumber + ", " 
      + KEY_IDNP + " = " + IDNP 
      + " WHERE " + KEY_ID + " = 1"; 

Die Werte in debug:

UPDATE user SET address = Efdsdfd, phone = 3797333, idnp = 2006002050245 WHERE id = 1 

und die Fehlermeldung, die ich erhalten, wenn diese Abfrage ausgeführt wird:

android.database.sqlite.SQLiteException: no such column: Efdsdfd 

Warum es die „Efdsdfd nimmt " als Spaltenname?

+0

versuchen Sie diese UPDATE Benutzer SET 'Adresse' = 'Efdsdfd', 'Telefon' = '3797333', 'IDNP' = '2006002050245' WO 'ID' = 1 –

+1

@JineshFrancis ... und warum zitieren Sie die * * coulmn Namen ** ?????? –

+0

Wie auch immer, Sie können parametrische SQL-Befehle oder Abfragen verwenden und Quoting vergessen. –

Antwort

1
UPDATE user SET address = Efdsdfd, phone = 3797333, idnp = 2006002050245 WHERE id = 1 

Die obige Abfrage ist nicht gültig, da die Adresse vom Typ VARCHAR oder TEXT ist. Sie müssen TEXT-Werte in einfache Anführungszeichen setzen.

Aktualisiert Query-String:

String UPDATE_INFORMATION = "UPDATE " + TABLE_USER + " SET " 
     + KEY_ADDRESS_OF_LIVING + " = '" + addressOfLiving + "', " 
     + KEY_PHONE + " = " + phoneNumber + ", " 
     + KEY_IDNP + " = " + IDNP 
     + " WHERE " + KEY_ID + " = 1"; 

Ergebnis wird als

UPDATE user SET address = 'Efdsdfd', phone = 3797333, idnp = 2006002050245 WHERE id = 1 
+0

Danke!Das scheint mein Problem gelöst zu haben. Ich werde die App neu installieren und als eine der Spalten in meinem SQLite wurde nicht erstellt, aber am sichersten war es das Problem –

+0

ja! Ich musste 10 Minuten warten, bis ich die Antwort annehmen konnte. Vielen Dank! –

+1

Oder Sie können parametrische SQL-Befehle oder Abfragen verwenden und Quoting vergessen. –

2

Sie die einfachen Anführungszeichen fehlen. Beachten Sie, dass beim Festlegen von Werten für Zeichenfolgenspalten die Werte von einfachen Anführungszeichen umgeben sein müssen. Zum Beispiel:

UPDATE Adresse user SET = Efdsdfd

ist meine Empfehlung

UPDATE user SET-Adresse = 'Efdsdfd' sein sollte

auch, dass alle Konstanten, die Sie für die Datenbankabfrage verwenden (einfache Anführungszeichen, Kommas, Datentypen usw.), sollten als Konstanten gesetzt werden n eine DbHelper oder Konstants Datei und nicht geschrieben.

Zum Beispiel:

String UPDATE_INFORMATION = "UPDATE" + TABLE_USER + "SET" + KEY_ADDRESS_OF_LIVING + "=" + addressOfLiving + ""

Sollte sein:

Zeichenfolge UPDATE_INFORMATION = "UPDATE" + TABLE_USER + "SET" + KEY_ADDRESS_OF_LIVING + "=" + Helfer.SIMPLE_QUOTES + AdresseO fLiving + Helper.SIMPLE_QUOTES + Helper.COMMA

+0

Vielen Dank für Ihre Antwort. Es wäre viel einfacher, ein einfaches Zitat zu schreiben, das den Wert von einer Hilfsklasse aufruft :) Die beste Lösung wäre, die SQLite-Update-Funktion aufzurufen, anstatt die manuell geschriebene Abfrage auszuführen, aber ich tue dies für Testzwecke –

+1

@AndrewT "Die beste Lösung wäre, die SQLite-Update-Funktion aufzurufen", stimme ich Ihnen vollkommen zu. Aber wer soll ich beurteilen) =). Haben Sie eine gute Prüfung –

+0

Jeder hat seinen Stil, den Code zu schreiben :) –

2

Sie müssen TEXT Werte in einfache Anführungszeichen setzen.

+1

Oder Sie können parametrische SQL-Befehle oder Abfragen verwenden und Quoting vergessen. –

+0

Ich wollte nur sehen, wie man Abfragen ausführt, da ich mehrere Operationen ausführen muss, die ich mit Abfragen nicht erreichen kann. Aber für diese Frage haben Sie völlig Recht! –