2013-08-04 2 views
0

J'essaie de créer une table mais continue d'obtenir la même erreur encore et encore et j'ai été googling pour la réponse sans aucun succès.Android SQLite Créer une table Problème

La requête est exécutée dans onCreate() est:

CREATE TABLE Posts 
(
    PostID TEXT PRIMARY KEY, 
    CourseID TEXT, 
    FOREIGN KEY (CourseID) REFERENCES Courses (CourseID) ON DELETE CASCADE, 
    PostStartDate INTEGER NOT NULL, 
    PostEndDate INTEGER NOT NULL, 
    TeacherID TEXT, 
    FOREIGN KEY (TeacherID) REFERENCES Teachers (TeacherID) ON DELETE CASCADE, 
    PostDescription TEXT, 
    PostHidden INTEGER DEFAULT(0) 
) 

L'erreur que je reçois est:

08-04 14:24:24.018: I/com.re.placed.DBHandler(10656): android.database.sqlite.SQLiteException: near "PostStartDate": syntax error (code 1): , while compiling: CREATE TABLE Posts (... (removed the rest of the query) 

Je soupçonne que l'erreur pourrait avoir quelque chose à voir avec la clé étrangère ou la cascade de suppression. Les deux colonnes refenced sont créées:

CourseID TEXT PRIMARY KEY and TeacherID TEXT PRIMARY KEY 

Et assurez-vous que les clés étrangères i sont utilisées ont écrit la méthode onOpen comme:

@Override 
public void onOpen(SQLiteDatabase db) { 
    db.execSQL("PRAGMA foreign_keys = ON;"); 
    super.onOpen(db); 
} 

Toute aide ou suggestions sont appréciés.

Répondre

2

Essayez de placer les contraintes de clé étrangère à la fin de l'instruction CREATE, au moins cela fonctionne dans sqlfiddle avec sqlite.

CREATE TABLE Posts 
(
    PostID TEXT PRIMARY KEY, 
    CourseID TEXT, 
    PostStartDate INTEGER NOT NULL, 
    PostEndDate INTEGER NOT NULL, 
    TeacherID TEXT, 
    PostDescription TEXT, 
    PostHidden INTEGER DEFAULT(0), 
    FOREIGN KEY (TeacherID) REFERENCES Teachers (TeacherID) ON DELETE CASCADE, 
    FOREIGN KEY (CourseID) REFERENCES Courses (CourseID) ON DELETE CASCADE 
); 
+0

Cela fonctionne! Merci! :RÉ – Flipbed

Questions connexes