Android SQLite long 值被检索/转换为 int 值

标签 android sqlite

我的数据库表中有一个 INTEGER 列,并已将 1476355625598 的值保存到其中(通过更新现有行)。

当我立即通过查询检查该值时,我得到了返回的相同、正确的 1476355625598 值。

但是,当我的 IntentService 稍后检索该值时,它返回的是 -1113124226 的值。

我检查了一下,-1113124226 的值与您调用 (int)1476355625598 的值相同。

我已将调试输出添加到修改此列的所有代码行,并且可以确认我没有其他数据库操作正在更新该值。

所以似乎有什么东西正在将我的 long 转换为 int ...任何想法如何/为什么会发生这种情况?

注意 - 我保存的值是时间戳(毫秒格式),这比以字符串格式保存更可取。

更新

因为我的数据库可以通过内容提供者访问,所以我在我的 MyApplication 类中添加了一个内容观察器。它不会报告相关表的任何其他更新。

更新 #2

问题现已解决。看评论...

最佳答案

在我有时间写这篇文章之前,OP 发现了他的错误,但我仍然会发布它以关闭它。如果他愿意,OP 可以添加他自己的(没有难过的感觉;))(这将防止其他人稍后发送垃圾邮件以获得一些代表点......)

如异常(exception),问题出在从游标中检索值。即使值存储到一个 INTEGER 中,此列可以容纳一个 long 所以在游标上,我们需要使用 getLong(int)getLong(String) 方法。如果不是,JAVA 将截断该值作为异常(exception)。

在问题中, setter/getter 不存在,但 OP 帖子和另一个帖子的答案:https://stackoverflow.com/a/40008872/1617737

这显示了他如何复制光标。这是他对 NUMERIC SqliteType 使用 getInt 而不是 getLong 的情况。

关于Android SQLite long 值被检索/转换为 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40019370/

相关文章:

c++ - c++中的sqlite段错误

javascript - WebSQL | SQLite - 将 "?"字符插入数据库

ruby-on-rails - 运行 bundle install 和 rails server 命令时出错

java - 多线程 Android 游戏上的图像不稳定

android - 表面创建 : java. lang.NullPointerException

android - 传递包时获取空指针

Android膨胀的textview忽略宽度

java - 每次单击按钮后如何从位图中删除点

android - 将 SQLite 数据库上传到 Google App 引擎?

perl - DBD::SQLite 问题,在挂载的文件系统上出现 I/O 错误