从Android Studio 2.3升级到Android Studio 3.0 canary 1后出现问题
db.execSQL("CREATE TABLE IF NOT EXISTS " + Contract.COUNTRY_PATH + " (" +
Contract.Country._ID + " INTEGER AUTO INCREMENT , " +
Contract.Country.COLUMN_CITY_ID + " INTEGER PRIMARY KEY," +
Contract.Country.COLUMN_COUNTRY_NAME + " TEXT," +
Contract.Country.COLUMN_SUNRISE + " INTEGER," +
Contract.Country.COLUMN_SUNSET + " INTEGER) ");
显示错误。
'(',')',<column constraint> or comma expected ,got 'AUTO'
Android Studio 2.3很好用。 有什么建议。 感谢。
答案 0 :(得分:1)
不要在列名中添加任何空格。
我使用的是Android Studio 3.0 beta7。同样的问题仍然存在。
答案 1 :(得分:0)
Android Studio 3中的SQL语法检查程序比sqlite本身更严格。
sqlite本身中的 INTEGER AUTO INCREMENT
基本上只会导致具有整数亲和性的列。错误的AUTO INCREMENT
只是噪音。这就是它在Studio中被标记但在sqlite中不会导致语法错误的原因。
如果您想要自动增量列,请将其设为INTEGER PRIMARY KEY
。如果您确实需要避免rowid重用,那么该列应为INTEGER PRIMARY KEY AUTOINCREMENT
。请注意,表中只能有一个主键列。另见:https://sqlite.org/autoinc.html
答案 2 :(得分:-2)
CREATE TABLE yourtablename (id INTEGER primary key autoincrement NOT NULL, name TEXT, description TEXT, expValue INTEGER, category INTEGER NOT NULL REFERENCES categories (id), date TEXT)