Android Studio 3.0 canary 1:SQL语法错误

时间:2017-05-26 15:53:45

标签: android android-studio android-sqlite

从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很好用。 有什么建议。 感谢。

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)