Android Studio 3.1
用途:更新 SQLite 数据库的版本号
错误
意料之中,得到了"?
导致错误的代码是
db.execSQL("PRAGMA user_version = ?", new Object[]{questionDbVersion});
android.database.sqlite.SQLiteException: near "?": 语法错误 (代码1(:,编译时: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);
在sqlite所理解的SQL语法中,PRAGMA值不能是变量,?
表示变量。
第一个错误来自 Android Studio 静态分析器。有误报(例如这个(,特别是对于3.0.x版本,但这是有效的错误。
第二个错误是相同的运行时错误。
对 PRAGMA
s 使用硬编码字符串或String.format()
格式,或者如您所发现的那样,对于此特定编译指示,您可以使用 setVersion()
.