Android SQLite插入查询将0修剪为插入字符串的第一个字符
我有一个insert查询,它将联系人添加到数据库中。但是,我在插入第一个字符为“0”的字符串时遇到问题 例如,我输入这个:09127400049Android SQLite插入查询将0修剪为插入字符串的第一个字符,android,database,sqlite,android-studio,android-sqlite,Android,Database,Sqlite,Android Studio,Android Sqlite,我有一个insert查询,它将联系人添加到数据库中。但是,我在插入第一个字符为“0”的字符串时遇到问题 例如,我输入这个:09127400049 它现在将另存为: 9127400049 public void addEmergencyContacts(String name, long number, String email, String relationship) { ContentValues cv = new ContentValues(); cv.put("NAME"
它现在将另存为: 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);
您是否知道任何解决方案或建议要插入0字符,您需要执行以下操作:-
- 定义列类型为文本的编号列(如果尚未定义为文本类型)
- 更改AddMergencyContacts方法的签名,使2nd参数为字符串
- i、 e.将
更改为public void addEmergencyContacts(字符串名称、长数字、字符串电子邮件、字符串关系){……
public void addEmergencyContacts(字符串名称、字符串编号、字符串电子邮件、字符串关系){……
- i、 e.将
- 将每次调用更改为
,以将第二个参数的值作为字符串传递,确保前导0包含在该字符串中addMergencyContacts
- 或者
- 删除应用程序的数据或
- 卸载应用程序
- 重新运行应用程序
理由是为了灵活高效地使用SQLite:-
- 具有灵活的列类型
- 允许大多数列存储任何类型的数据
- 使用尝试以尽可能少的字节存储数据的规则
这里有一个详细说明因素的链接。您正在将电话号码解析为
long
并发送它。一旦打包,电话号码将不是0009123
,而是9123
,除非您在cv
变量中使用不同的格式。请在此行上设置断点<代码>cv.put(“编号”,编号);并检查值number
有什么办法插入0个字符吗?请添加创建表查询。正如Nikola告诉您的,您在插入电话号码之前就一直在解析电话号码,可能还有表结构。您必须将其作为字符串来处理,因为整个电话号码都应该存储和操纵ted为字符串…而不是那么长…因此,请更改您的数据库和代码,以将电话号码表示为字符串,而不是那么长)。