SQLite syntax Fehler in der Nähe von "TABELLE ERSTELLEN"
Hier ist mein code:
String CREATE_DATABASE = "CREATE TABLE " + TABLE_NAME + "(" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
"title TEXT, "+
"author TEXT, "+
"state TEXT);";
db.execSQL(CREATE_DATABASE);
Den LogCat sagt : 12-11 23:43:50.553: E/AndroidRuntime(3706): android.Datenbank.sqlite.SQLiteException: in der Nähe von "CREATE TISCH": syntax error (code 1): ,, während der Kompilierung: ERZEUGEN TABELLE PapersTable(_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT author TEXT, Zustand TEXT);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
CREATE TABLE
syntax ist alles Recht, da hast du es gepostet.Ich vermute, es ist ein non-breaking space (ASCII-0xA0) zwischen
CREATE
undTABLE
. Ersetzen Sie es mit dem normales Leerzeichen (ASCII 0x20). Das würde erklären, die syntax-Fehler, den Sie gepostet: parser ist die BehandlungCREATE TABLE
als einzige unbekannte token und nicht als zwei getrennte bekannt TokenCREATE
undTABLE
.Was definitiv falsch ist, dass Sie rufen
db.close()
auf dieSQLiteDatabase db
übergeben als parameter an Ihre Funktion. Sie sollte nur in der Nähe von Datenbanken, die Sie öffnete sich, und schließen Sie es dieser Weg führt zu einer Ausnahme, wenn auch eine andere.Versuchen, diesen code in der onCreate-Methode.
Code Zu Ersetzen:
String CREATE_DATABASE = "CREATE TABLE "+TABLE_NAME+ " ( "+KEY_ID+" INTEGER PRIMARY KEY, "+KEY_TITLE+"TEXT "+KEY_AUTHOR+"TEXT "+KEY_STATE+"TEXT )";
db.execSQL(CREATE_DATABASE);
In SQLite, eine Spalte deklarierten integer primary key auto increment, also versuchen Sie, dass:
Sehen diese Antwort für Referenz.
AUTOINCREMENT
und die Semantik vonINTEGER PRIMARY KEY
undINTEGER PRIMARY KEY AUTOINCREMENT
sind etwas anders. Siehe sqlite.org/autoinc.html