【问题标题】:<pragma value> expected, got '?' [closed]<pragma value> 预期,得到“?” [关闭]
【发布时间】:2018-09-14 18:58:06
【问题描述】:

Android Studio 3.1

用途:更新sqlite数据库的版本号

错误

预期,得到'?'

导致错误的代码是

db.execSQL("PRAGMA user_version = ?", new Object[]{questionDbVersion});

android.database.sqlite.SQLiteException:靠近“?”:语法错误(代码 1): , 编译时: PRAGMA user_version = ? 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)

但是在Sql环境下,sql语句运行良好

PRAGMA user_version =1
PRAGMA user_version
PRAGMA user_version =2

我该怎么办?

============ 我找到了解决办法

db.setVersion(questionDbVersion);

【问题讨论】:

    标签: android sqlite pragma


    【解决方案1】:

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

    第一个错误来自 Android Studio 静态分析器。出现误报(例如this),尤其是在 3.0.x 版本中,但这是有效错误。

    第二个错误是相同的运行时错误。

    PRAGMAs 使用硬编码字符串或String.format() 格式,或者如您所见,对于这个特定的编译指示,您可以使用setVersion()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 2020-07-25
      相关资源
      最近更新 更多