Android Studio 3.1
目的:更新sqlite数据库的版本号
错误
<pragma value> expected, got '?'
代码导致的错误是
db.execSQL("PRAGMA user_version = ?", new Object[]{questionDbVersion});
android.database.sqlite.SQLiteException: near "?": syntax error (code
1): , while compiling: PRAGMA user_version = ?
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
但是在Sql环境中,sql语句运行良好
PRAGMA user_version =1
PRAGMA user_version
PRAGMA user_version =2
我该怎么办?
============ 我找到了解决方案
db.setVersion(questionDbVersion);
答案 0 :(得分:1)
在sqlite理解的SQL语法中,PRAGMA value cannot be a variable和?
表示变量。
第一个错误来自Android Studio静态分析器。存在误报(例如this),特别是版本3.0.x,但这个是有效的错误。
第二个错误是同一个运行时错误。
对String.format()
使用硬编码字符串或PRAGMA
格式,或者如您所知,对于此特定编译指示,您可以使用setVersion()
。