【发布时间】:2018-04-13 22:13:12
【问题描述】:
我认为这是切换到 Android Studio 3.0 后出现的新错误。我收到一个 lint 语法错误:
<pragma value> expected, got 'ON'
我仅在以下两种方法中的第一种方法中出现此错误:
private static void setForeignKeyConstraintsEnabled(@NonNull SQLiteDatabase db) {
if (!db.isReadOnly()) {
db.execSQL("PRAGMA foreign_keys=ON;");
}
}
private static void setForeignKeyConstraintsDisabled(@NonNull SQLiteDatabase db) {
if (!db.isReadOnly()) {
db.execSQL("PRAGMA foreign_keys=OFF;");
}
}
我只找到了一个suggested fix on the internet as of writing。它是德文的,说我不应该对编译指示使用常量字符串,而应该使用字符串参数。
String query = String.format ("PRAGMA foreign_keys = %s","ON");
db.execSQL(query);
但我怀疑如果这消除了错误,它只是通过使代码过于复杂而无法检测到 lint 规则来实现。
为什么ON 会抛出错误而不是OFF?我的语法错了吗?
【问题讨论】:
-
我猜这是 Lint 规则中的一个错误。你可以试试alternative syntax(小写
no、0、括号而不是=等)看看你能不能得到一些简单的东西并通过Lint。 -
@CommonsWare,谢谢,使用带符号的数字语法解决了这个错误
-
尽管对您当前删除的答案发表了评论,但您回答自己的问题是完全合理的。特别是,对于这种情况,我会建议你写下答案,因为你有工作代码。我投票取消删除你的答案,我建议你恢复它。
-
完成!感谢您的指导!
标签: android sqlite android-studio android-studio-3.0