带有关联文本的SQLite列仍将长数字存储为整数
我有一个名为带有关联文本的SQLite列仍将长数字存储为整数,sqlite,Sqlite,我有一个名为deliverysimp的表,我试图在其中插入一些数据。我知道这些列的数据类型只是亲缘关系而不是限制,但是我需要将下面的parcelid列存储为TEXT CREATE TABLE IF NOT EXISTS deliverysimp (parcelid TEXT, expected integer, primary key (parcelid)) 我正在使用以下javascript将数据插入数据库: context.executeSql("INSERT INTO deliverys
deliverysimp
的表,我试图在其中插入一些数据。我知道这些列的数据类型只是亲缘关系而不是限制,但是我需要将下面的parcelid
列存储为TEXT
CREATE TABLE IF NOT EXISTS deliverysimp (parcelid TEXT, expected integer, primary key (parcelid))
我正在使用以下javascript将数据插入数据库:
context.executeSql("INSERT INTO deliverysimp(parcelid, expected) values(?,?)",
[
'' + delivery.parcelid,
delivery.expected
], function () { }, me.ErrorHandler);
您可以看到,我曾尝试在parcelid之前添加一个空白的“”+
,以尝试强制关联,但没有此项,行为是相同的;即:
如果我尝试存储parcelid33333333322222222222 3
这将作为3.33333333333 22223E+34
存储到数据库中,我需要它作为文本/字符串表示
你知道我如何让SQLite将其命名为
TEXT
?我怀疑你已经有了一个字符串,而不是你期望的字符串。由于您拥有的数字不能用8字节整数表示,因此它将转换为实数,即转换为字符串,即“3.33333333333 22223E+34”。因此,如果希望值为'3333333332222222223',则必须将其插入表中
要检查,请执行
从deliverysimp中选择parcelid,TYPEOF(parcelid)
使用sqlite3
命令行工具,查看您得到了什么。JavaScript很乐意将+
解释为数字的加法。尝试toString()
。您是对的。当我返回到函数的初始化并检查传入的参数时,parcelid
已经设置为3.33333333 22223E+34
,因此我需要在代码的前面找到罪魁祸首。非常有助于找出错误的建议,谢谢。@RussAwesome:很高兴能帮上忙。