在创建Db Android时获取SqlLiteException

时间:2014-07-04 07:58:08

标签: android android-sqlite

尝试使用SqlLite创建数据库时出错。

这是错误代码

07-04 03:50:21.715: E/AndroidRuntime(786): Caused by: android.database.sqlite.SQLiteException: near ",": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS timetable ( id INTEGER PRIMARY , day INTEGER  NOT NULL ,  sub_id INTEGER  NOT NULL ,  time_from TEXT NOT NULL ,  time_to TEXT NOT NULL )

无法弄清楚为什么会出现这个错误

这是创建Db的代码:

        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            db.execSQL("CREATE TABLE IF NOT EXISTS timetable ( id INTEGER PRIMARY , day INTEGER  NOT NULL ,  sub_id INTEGER  NOT NULL ,  time_from TEXT NOT NULL ,  time_to TEXT NOT NULL )");
            db.execSQL("CREATE TABLE IF NOT EXISTS noofperiods (  id INTEGER PRIMARY ,  noofperiod INTEGER NOT NULL )");

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            db.execSQL("DROP TABLE IF EXISTS timetable");
            db.execSQL("DROP TABLE IF EXISTS noofperiods");
            onCreate(db);

        }

    }

2 个答案:

答案 0 :(得分:0)

KEY之后缺少PRIMARY个字词:

db.execSQL("CREATE TABLE IF NOT EXISTS timetable (id INTEGER PRIMARY KEY, day INTEGER  NOT NULL ,  sub_id INTEGER  NOT NULL ,  time_from TEXT NOT NULL ,  time_to TEXT NOT NULL )");
db.execSQL("CREATE TABLE IF NOT EXISTS noofperiods (id INTEGER PRIMARY KEY,  noofperiod INTEGER NOT NULL )");

答案 1 :(得分:0)

PRIMARY更改为PRIMARY KEY 试试

   db.execSQL("CREATE TABLE IF NOT EXISTS timetable (id INTEGER PRIMARY KEY, day INTEGER  NOT NULL ,  sub_id INTEGER  NOT NULL ,  time_from TEXT NOT NULL ,  time_to TEXT NOT NULL )");
   db.execSQL("CREATE TABLE IF NOT EXISTS noofperiods (id INTEGER PRIMARY KEY,  noofperiod INTEGER NOT NULL )");

而不是

   db.execSQL("CREATE TABLE IF NOT EXISTS timetable ( id INTEGER PRIMARY , day INTEGER  NOT NULL ,  sub_id INTEGER  NOT NULL ,  time_from TEXT NOT NULL ,  time_to TEXT NOT NULL )");
            db.execSQL("CREATE TABLE IF NOT EXISTS noofperiods (  id INTEGER PRIMARY ,  noofperiod INTEGER NOT NULL )");