SQLite 插入查询将 0 修剪为插入字符串的第一个字符

问题描述 投票:0回答:2

我有一个插入查询,它在数据库中添加联系人。但是,我在插入第一个字符为“0”的字符串时遇到问题。

例如我输入:09127400049
现在将另存为: 9127400049

public void addEmergencyContacts(String name, long number, String email, String relationship) {
    ContentValues cv = new ContentValues();
    cv.put("NAME", name);
    cv.put("NUMBER", number);
    cv.put("EMAIL", email);
    cv.put("RELATIONSHIP", relationship);

    this.getWritableDatabase().insertOrThrow("ELSA_EMERGENCY_CONTACTS", "", cv);
}

这是我插入联系人的方法

controller.addEmergencyContacts(emergencyContactET.getText().toString(), Long.parseLong(emergencyNumberET.getText().toString()), emergencyEmailET.getText().toString(), relationship);

你知道那里有什么解决方案或建议吗

android database sqlite android-studio android-sqlite
2个回答
1
投票

要插入 0 字符,您需要执行以下操作:-

  • 定义列类型为 TEXTNUMBER 列(如果尚未定义为 TEXT 类型)。
  • 更改 addEmergencyContacts 方法的签名,使 2nd 参数为 String
    • 即将
      public void addEmergencyContacts(String name, long number, String email, String relationship) {.....
      更改为
      public void addEmergencyContacts(String name, String number, String email, String relationship) {.....
  • 更改对
    addEmergencyContacts
    的每个调用,以将第二个参数的值作为字符串传递,确保前导 0 包含在该字符串中。
  • 无论是
    • 删除应用程序的数据或
    • 卸载应用程序
  • 重新运行应用程序。

理由是为了SQLite灵活高效:-

  • 具有灵活的列类型
  • 允许大多数列存储任何类型的数据
  • 使用尝试以尽可能少的字节存储数据的规则。

这里没有详细介绍这些因素的链接,而是详细介绍了SQLite 版本 3 中的数据类型


0
投票

将字段类型从 varchar 更改为 char

© www.soinside.com 2019 - 2024. All rights reserved.