【问题标题】:Read sqlite3 db data into uint64_t将 sqlite3 db 数据读入 uint64_t
【发布时间】:2020-12-01 05:37:38
【问题描述】:

我对 sqlite3 很陌生,我对在 sqlite3 数据库中插入和读取 uint64 数据有疑问。我正在使用 Sqlite C 接口。

在将数据插入 sqlite3 数据库时,由于我没有看到任何绑定 uint64 数据的函数,所以我使用了 sqlite3_bind_int64。所以在 DB 中的数据将存储到有符号的 int64 中。

我需要将相同的数据读入 uint64。所以我传递给 sqlite3 的查询是这样的:

"从 tblname 中选择 ldtolu(length)"

这里的“ldtolu”是sqlite中的一个扩展,它调用int64_to_uint64,这应该从带有int64符号的DB读取数据,我需要将其转换为uint64。我写道:

static void
int64_to_uint64(sqlite3_context *context, int argc, sqlite3_value **argv)
{
    u_int64_t value;
    value = (u_int64_t)sqlite3_value_int64(argv[0]);
    sqlite3_result_int64(context, (sqlite3_int64) (value));
}

在这里我也只看到“sqlite3_result_int64”,没有像“sqlite3_result_uint64”这样的函数。

谁能帮助我如何绑定 uint64 并读取相同的数据或如何编写扩展来读取 int64 并将其转换为 uint64。

谢谢。

【问题讨论】:

    标签: c database sqlite


    【解决方案1】:

    SQLite's data types 中没有 unsigned 64 位类型。

    要处理大于 9223372036854775807 的值,您必须使用浮点数(不够精确,无法表示所有整数)或字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-25
      • 2017-07-17
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 2020-01-11
      • 2011-11-27
      • 1970-01-01
      相关资源
      最近更新 更多