2014-08-29 4 views
6

Ich versuche, eine Tabelle in meiner Datenbank mit einer ID zu erstellen, die Autoincrement selbst ist, aber jedes Mal wenn ich versuche, das AutoINCREMENT Schlüsselwort zu meiner Abfrage hinzuzufügen, sagt es mir:AUTOINCREMENT ist nur auf einem INTEGER PRIMARY KEY erlaubt - Android

AUTOINCREMENT nur auf einem INTEGER PRIMARY KEY erlaubt ist

Hier ist meine Frage:

@Override 
public void onCreate(SQLiteDatabase db) { 
    String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_TASKS + " (" 
      + KEY_ID + "INTEGER PRIMARY KEY AUTOINCREMENT, " 
      + KEY_NOTETITLE + " TEXT, " + KEY_NOTECONTENT + " Text, " 
      + KEY_STATUS + " INTEGER)"; 
    db.execSQL(sql); 
} 

ich habe auch versucht, AUTO_INCREMENT b zu schreiben Dann habe ich Syntaxfehler bekommen.

Ich fand heraus, dass dies die Ursache des Problems ist, denn wenn ich versuche, das AUTOINCREMENT-Wort zu entfernen, funktioniert es gut.

Also ... was denkst du ist das Problem?

Antwort

0

Tabelle erstellen, wie dies etwas Platz setzen, bevor INTEGER ....

"CREATE TABLE "+TABLE_NAME+" ("+KEY_ID+" INTEGER PRIMARY KEY AUTOINCREMENT)"; 
18

Sie benötigen einen Raum zwischen KEY_ID UND INTEGER

So

+ KEY_ID + "INTEGER PRIMARY KEY AUTOINCREMENT, " 

zu

ändern hinzufügen
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
4

Tabelle mit Ganzzahl-Primärschlüssel erstellen, wobei AUTOINCREMENT

, z.

CREATE TABLE t1(
    a INTEGER PRIMARY KEY, 
    C TEXT 
); 

Insert into t1(C) values("Hello"); 
+0

Ohne autoincrement kann sqlite gelöschte IDs wiederverwenden. –

+0

@loshadvtapkah PRIMARY KEY verwendet unbenutzte ganze Zahl größer als die letzte Zeile ID: Quelle: https://www.sqlite.org/autoinc.html –

+0

@RameshKumar ja, und es bedeutet nicht, es würde IDs nicht wiederverwenden. Wenn ich mehrere Datensätze mit den oberen IDs entferne, werden sie wiederverwendet. In den meisten Fällen ist es überhaupt kein Problem, aber selbst wenn die Anwendung bei der Überprüfung von Fremdschlüsseln im Auge behält, ist es besser, keine wiederverwendbaren Schlüssel zu verwenden, um einen Fehler aufgrund eines anderen Fehlers zu vermeiden. –