【发布时间】:2015-08-21 21:07:47
【问题描述】:
我正在尝试在TABLENAME1 键中创建复合主键,我想在两个不同的表中使用,即TABLENAME5 和TABLENAME6 这可能吗?我很烦SQLiteException 请帮帮我,我对 android 的东西很陌生。这是代码..
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME1 + " (teacher TEXT,course TEXT,att TEXT,PRIMARY KEY(course, att), code TEXT NOT NULL, bunk INTEGER, attend INTEGER, room TEXT)");
db.execSQL("CREATE TABLE " + TABLE_NAME2 + " (id INTEGER PRIMARY KEY, title TEXT, notes TEXT)");
db.execSQL("CREATE TABLE " + TABLE_NAME5 + " (course TEXT,bunkdate LONG,FOREIGN KEY(course) REFERENCES " + TABLE_NAME1 + "(course) ON DELETE CASCADE)");
db.execSQL("CREATE TABLE " + TABLE_NAME6 + " (course TEXT,attdate LONG,FOREIGN KEY(att) REFERENCES " + TABLE_NAME1 + "(att) ON DELETE CASCADE)");
db.execSQL("CREATE TABLE " + TABLE_NAME3 + " (id INTEGER PRIMARY KEY AUTOINCREMENT,year INTEGER, month INTEGER, day INTEGER, hour INTEGER, minute INTEGER, title TEXT, type TEXT, status INTEGER, snooze INTEGER, shakemode INTEGER, mathsolver INTEGER, sun INTEGER,mon INTEGER,tue INTEGER, wed INTEGER,thu INTEGER, fri INTEGER,sat INTEGER)");
}
这里是 logcat:
08-22 01:51:44.419: E/SQLiteLog(1528): (1) near "code": syntax error
08-22 01:51:44.429: E/AndroidRuntime(1528): FATAL EXCEPTION: main
08-22 01:51:44.429: E/AndroidRuntime(1528): Process: com.smart.scheduler, PID: 1528
08-22 01:51:44.429: E/AndroidRuntime(1528): android.database.sqlite.SQLiteException: near "code": syntax error (code 1): , while compiling: CREATE TABLE campus (teacher TEXT,course TEXT,att TEXT,PRIMARY KEY(course, att), code TEXT NOT NULL, bunk INTEGER, attend INTEGER, room TEXT)
【问题讨论】:
-
需要在创建表声明的最后定义多个主键