【问题标题】:codenameone stores boolean values as true/false in sqlite when they should be 1/0codenameone 在 sqlite 中将布尔值存储为 true/false,而它们应该是 1/0
【发布时间】:2019-05-16 15:21:11
【问题描述】:

我有一个使用条目实现 PropertyBusinessObject 的类:

public final Property<Boolean, TestClass> isAdmin = new Property<>("isAdmin", Boolean.class);

使用 (SqlMap.insert()) 将其插入 sqlite 时,值存储为 true/false 而不是 1 或 0

这会在检索(选择)值时导致问题。他们总是返回为假。我相信 sqlite 不支持将真/假文字作为布尔指标。

如果我手动将 db 中的数据从 true 更改为 1,上述 SELECT 的工作将按预期进行。

【问题讨论】:

    标签: sqlite boolean codenameone


    【解决方案1】:

    我修复了这个错误here。虽然没有测试它,但它应该相对简单。

    但是,由于假期,我们不打算在 2019 年 1 月 4 日之前发布。如果错误/问题堆积如山,这可能会改变。

    【讨论】:

    • Thx 将在 2019 年 1 月接受您的更改。
    • 上述修复刚刚发布了吗?我现在看到这个失败:java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean at com.codename1.properties.SQLMap$SqlType$2.asUpdateInsertValue(SQLMap.java:69) at com.codename1.properties.SQLMap.insert(SQLMap.java:419) 在你的修复中,“数据”包含一个值为“真”的字符串。根据我的原始帖子,我的 PropertyBusinessObject 已被定义为布尔值。
    • 我可以看到我在这里修复的一个问题:github.com/codenameone/CodenameOne/commit/… 但是,这可能是由于数据库中已经存在“true”/“false”值造成的。该修复程序将于下周五发布
    • 你好。我也收到了一个全新的空数据库的错误。将等待修复。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多