2017-06-23 1 views
0

Le code pour la création de la table:Créer une table de base de données sqlite ayant une clé étrangère comme colonne de table dans android. Je suis confronté à une erreur de suivi. Comment puis-je résoudre ce

public static final String CREATE_USER_TABLE = "CREATE TABLE " + USER + 
     "(" 
     + KEY_USER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
     + KEY_USERNAME + " TEXT," 
     + KEY_MOBILE_NUMBER + " TEXT," 
     + KEY_EMAIL + " TEXT," 
     + KEY_USER_DISABLES + " TEXT," 
     + KEY_USER_PASSWORD + " TEXT" + 
     ")"; 

public static final String CREATE_DEVICE_TABLE="CREATE TABLE " + DEVICE + 
     "(" 
     + KEY_DEVICE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
     + KEY_DID + " TEXT," 
     + KEY_DEVICE_NAME + " TEXT," 
     + KEY_DEVICE_DISABLES + " TEXT" + 
     ")"; 

public static final String CREATE_USER_DEVICE_TABLE= "CREATE TABLE " + USER_DEVICE + " (" 
     + KEY_USER_DEVICE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
     + KEY_USER_DEVICE_DISABLES + " TEXT, " 
     + KEY_UD_USER+ " INTEGER NOT NULL , FOREIGN KEY ("+KEY_UD_USER+") REFERENCES "+USER+" ("+KEY_USER_ID+")," 
     + KEY_UD_DEVICE+ " INTEGER NOT NULL , FOREIGN KEY ("+KEY_UD_DEVICE+") REFERENCES "+DEVICE+" ("+KEY_DEVICE_ID+"));"; 


@Override 
public void onCreate(SQLiteDatabase db) { 
    /* creating user table */ 
    db.execSQL(CREATE_USER_TABLE); 

    /* creating device table */ 
    db.execSQL(CREATE_DEVICE_TABLE); 

    /* creating user-device table */ 
    db.execSQL(CREATE_USER_DEVICE_TABLE); 
} 

L'erreur:

Caused by: android.database.sqlite.SQLiteException: near "u_id": syntax error (code 1): , 
     while compiling: CREATE TABLE user_device (did INTEGER PRIMARY KEY AUTOINCREMENT, 
     false TEXT, d_id INTEGER NOT NULL , 
     FOREIGN KEY (d_id) REFERENCES users (id),u_id INTEGER NOT NULL , 
     FOREIGN KEY (u_id) REFERENCES device (id)); 
+0

est-ce que KEY_USER_DEVICE_DISABLES est supposé être "faux" dans la requête générée? – N3SS4H

Répondre

2

C'est le sysntax correct

CREATE TABLE user_device (did INTEGER PRIMARY KEY AUTOINCREMENT, 
false TEXT, d_id INTEGER NOT NULL , 
u_id INTEGER NOT NULL , 
FOREIGN KEY (d_id) REFERENCES users (id), 
FOREIGN KEY (u_id) REFERENCES device (id)); 

comme vous pouvez le voir sur enter image description here

parce que contraintes de table aller après colonne defs.

+0

merci, ça marche pour moi ... :) –