<编译指示值>预期,得到了'?'



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() .

最新更新