Android “SQLite异常”附近;课程“gpa”和“大学id”;
我在编写DatabaseHandler时遇到了一些异常,我已经纠正了大多数错误,但最近当我认为我刚刚完成了去bug时,出现了这个异常 这是我的SQL语句。所有其他3个表都没有错误,并且创建正确。这是最后一条CREATETABLE语句Android “SQLite异常”附近;课程“gpa”和“大学id”;,android,sql,sqlite,foreign-keys,Android,Sql,Sqlite,Foreign Keys,我在编写DatabaseHandler时遇到了一些异常,我已经纠正了大多数错误,但最近当我认为我刚刚完成了去bug时,出现了这个异常 这是我的SQL语句。所有其他3个表都没有错误,并且创建正确。这是最后一条CREATETABLE语句 private static final String CREATE_COURSE_TABLE = "CREATE TABLE " + TABLE_COURSE + " (" + KEY_ID + " INTEGER PRIMARY
private static final String CREATE_COURSE_TABLE = "CREATE TABLE "
+ TABLE_COURSE + " (" + KEY_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_COURSEPROF_ID
+ " INTEGER, " + FOREIGN_PROF + ", " + KEY_COURSEGPA_ID
+ " INTEGER, " + FOREIGN_GPA + ", " + KEY_COURSETERM_ID
+ " INTEGER, " + FOREIGN_TERM + ", " + KEY_NAME + " TEXT, "
+ KEY_COURSE_NUMBER + " TEXT, " + KEY_COURSE_LOCATION + " TEXT";
在崩溃之前也会出现另一个错误
无法打开AchieveGPA_DB进行写入(将尝试只读)
编辑:
感谢您的回复,添加了缺少的括号。尽管错误仍然存在,但以下是日志:
04-07 17:34:20.213:E/SQLiteOpenHelper(9100):android.database.sqlite.SQLiteException:靠近“course\u gpa\u id”:语法错误:,编译时:创建表courseTable(_idinteger主键自动递增,course\u prof\u id整数,外键(course\u prof\u id)引用professorTable(_id),course\u gpa\u id整数,外键(course\u gpa\u id)引用gpaTable(\u id)、course\u term\u id整数、外键(course\u term\u id)引用termTable(\u id)、名称文本、数字文本、位置文本)
外键语句
// Foreign key statements.
private static final String FOREIGN_PROF = "FOREIGN KEY("+KEY_COURSEPROF_ID+") REFERENCES "+TABLE_PROFESSOR+"("+KEY_ID+")";
private static final String FOREIGN_GPA = "FOREIGN KEY("+KEY_COURSEGPA_ID+") REFERENCES "+TABLE_GPA+"("+KEY_ID+")";
private static final String FOREIGN_TERM = "FOREIGN KEY("+KEY_COURSETERM_ID+") REFERENCES "+TABLE_TERM+"("+KEY_ID+")";
您混合了列规范和表约束(外键声明)。SQL语法要求列规范在前,表约束在后
要修复它,请将
外键移动到所有列规范之后的最后一个声明 请发布包含已编译SQL的异常消息。另外,您在结尾处遗漏了一个接近的段落。
)。非常感谢您的回答。问题已解决:)