<pragma value =“”>预计,得到'?'

时间:2018-04-05 04:22:04

标签: android sqlite pragma

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);

1 个答案:

答案 0 :(得分:1)

在sqlite理解的SQL语法中,PRAGMA value cannot be a variable?表示变量。

第一个错误来自Android Studio静态分析器。存在误报(例如this),特别是版本3.0.x,但这个是有效的错误。

第二个错误是同一个运行时错误。

String.format()使用硬编码字符串或PRAGMA格式,或者如您所知,对于此特定编译指示,您可以使用setVersion()