我必须在SQLite3中运行这样一个非常简单的查询。
INSERT OR REPLACE INTO tblPhoneList(Phone, PeopleId, StorageType) VALUES('+91912345789', '1','1');
但无论我做什么,该号码都存储为91912345789. +前缀被忽略。
字段Phone
是String
。为什么忽略+前缀?
反正有没有避免这个?
P.S。此代码在Android
中运行编辑: 这是表的模式
CREATE TABLE tblPhoneList(Phone STRING PRIMARY KEY ON CONFLICT REPLACE, StorageT
ype INTEGER, PeopleId INTEGER, FOREIGN KEY(PeopleId) references tblPeople(id));
答案 0 :(得分:9)
<的更新强>>来自the manual:
声明的“STRING”类型具有NUMERIC的亲和力,而不是TEXT
所以请将此列的类型更改为TEXT
,您应该完成。 < / 更新结束>
您的Phone
列的类型是什么(尝试PRAGMA table_info (tblPhoneList)
)?如果它是TEXT
(或BLOB
),那么你应该没有任何问题 - 只是在这里尝试过。如果是INTEGER
或REAL
,则应将其转换为TEXT
- 您不能指望INTEGER
或REAL
列存储+
字符串。
有关所有详细信息,请参阅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
类型在这里支持得很差。