web-dev-qa-db-fra.com

AUTOINCREMENT n'est autorisé que sur une clé primaire INTEGER - android

J'essaie de créer une table dans ma base de données avec un ID auto-incrémenté, mais chaque fois que j'essaie d'ajouter le mot clé AUTOINCREMENT à ma requête, il me dit que:

AUTOINCREMENT n'est autorisé que sur une clé primaire INTEGER

Voici ma requête:

@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);
}

J'ai aussi essayé d'écrire AUTO_INCREMENT mais j'ai eu une erreur de syntaxe.

J'ai découvert qu'il s'agit de la source du problème car chaque fois que j'essaie de supprimer le mot AUTOINCREMENT, cela fonctionne correctement.

Alors ... quel est le problème, selon vous?

9
David Lasry

Vous devez ajouter un espace entre KEY_ID ET INTEGER

Alors change

+ KEY_ID + "INTEGER PRIMARY KEY AUTOINCREMENT, "

à

+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
23
Apoorv

Créer une table avec une clé primaire entière sans avoir besoin de mentionner explicitement AUTOINCREMENT

par exemple.

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

Insert into t1(C) values("Hello");
5
user3507327

Créer une table comme celle-ci met de l'espace avant INTEGER ....

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