SQLite3存储仅包含数字的String

时间:2010-07-08 13:35:17

标签: sql android sqlite

我必须在SQLite3中运行这样一个非常简单的查询。

INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('+91912345789', '1','1');

但无论我做什么,该号码都存储为91912345789. +前缀被忽略。 字段PhoneString。为什么忽略+前缀? 反正有没有避免这个?

P.S。此代码在Android

中运行

编辑: 这是表的模式

CREATE TABLE tblPhoneList(Phone STRING PRIMARY KEY ON CONFLICT REPLACE, StorageT
ype INTEGER, PeopleId INTEGER, FOREIGN KEY(PeopleId) references tblPeople(id));

5 个答案:

答案 0 :(得分:9)

<的更新>来自the manual

  

声明的“STRING”类型具有NUMERIC的亲和力,而不是TEXT

所以请将此列的类型更改为TEXT,您应该完成。 < / 更新结束>

您的Phone列的类型是什么(尝试PRAGMA table_info (tblPhoneList))?如果它是TEXT(或BLOB),那么你应该没有任何问题 - 只是在这里尝试过。如果是INTEGERREAL,则应将其转换为TEXT - 您不能指望INTEGERREAL列存储+字符串。

有关所有详细信息,请参阅Datatypes In SQLite Version 3

答案 1 :(得分:2)

这是文字! SQLite只支持Integer,Text,Real和BLOB。

答案 2 :(得分:1)

您的数据库中的字段不能是字符串,您最好检查它,TEXT或VARCHAR可能有效。祝你好运!

答案 3 :(得分:0)

试试这个:

INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('\+91912345789', '1','1');

答案 4 :(得分:0)

感谢所有回复。 我将类型String(是的,支持的字符串类型)更改为Varchar(32),这个错误神奇地消失了。看起来String类型在这里支持得很差。