【问题标题】:Sqlite store different value of inserted integerSqlite存储插入整数的不同值
【发布时间】:2015-05-02 18:53:04
【问题描述】:

当我通过 parseInt() 方法将其解析为整数时,我有一个包含 19 位数字 的密钥,它会更改一些数字。当我将此整数插入 sqlite 表时,它再次更改数字(col 是主键,不是自动递增和整数类型)i-e

  1. '1115430194923422469'字符串格式
  2. 1115430194923422500 解析后
  3. 1115430194923422464值插入/存储在数据库中

现在,当我从数据库中检索此值时,它会返回第 2 点中提到的值。

谁能解释为什么会出现这种行为。?插入的值相同(检索时),但存储在 sqlite 表列中的值不同。如何正确添加值,使其在列中保持不变。

这是代码示例。

var keyStr = '1115430194923422469'; var key = parseInt(keyStr); var query = 'INSERT INTO Books (key, type) VALUES (?, ?)'; testdb.execute(query, key, 'Comic');

我正在使用钛工作室和最新的 sdk 3.5.1

【问题讨论】:

    标签: javascript sqlite integer titanium titanium-alloy


    【解决方案1】:

    What is JavaScript's highest integer value that a Number can go to without losing precision? 简而言之:您的数字太大而无法将其作为整数使用而不会在 javascript 中丢失精度。您可以仅将其作为文本处理或使用一些支持库,如 big.js

    【讨论】:

    • big.js 将其更改为对象,而我需要以整数格式将其插入数据库。
    • 是的,您可以在数据库中使用这样的数字(sqlite 支持 64 位整数)。 >> big.js 将其更改为对象 toString() 在 Big 中重载。
    • 你能更新一下如何使用它的示例。我在问题中提到了我的代码。?
    • 类似这样的东西:var key = new Big('1115430194923422469'); key.add(1); var query = 'INSERT INTO Books (key, type) VALUES (?, ?)'; testdb.execute(query, key.toString(), 'Comic');
    猜你喜欢
    • 2016-05-27
    • 2015-05-03
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    相关资源
    最近更新 更多