我的数据库表中有一个INTEGER
列,并将1476355625598
的值保存到该列(通过更新现有行)。
当我通过查询立即检查该值时,我得到了相同的、正确的、返回的1476355625598
值。
但是,当我的intentservice稍后检索该值时,它将获得返回的-1113124226
值。
我做了一个检查,-1113124226
与您调用的(int)1476355625598
值相同。
我已将调试输出添加到修改此列的所有代码行中,并且可以确认没有其他数据库操作正在更新该值。
所以似乎有什么东西把我的长线投射到了一个点上…你知道这是怎么发生的吗?
nb-我要保存的值是时间戳(millis格式),这比以字符串格式保存要好。
更新
因为我的数据库可以通过内容提供者访问,所以我在myapplication类中添加了一个内容观察者。它不会报告有问题的表的任何其他更新。
更新第2号
问题现在解决了。请参阅注释…
最佳答案
我还没来得及写这篇文章,操作人员就发现了他的错误,但我还是会把它贴出来关闭它。OP可以添加他自己的,如果他想(没有困难的感觉;)(这将防止其他垃圾邮件稍后得到一些代表点…)
除此之外,问题来自于从游标检索值。即使该值存储为整数,此列也可以在光标上保留一个long
,因此我们需要使用getLong(int)
或getLong(String)
方法获取该值。如果不是,Java将作为例外截断值。
在这个问题中,getter不存在,而是在另一个post上的op post和答案:https://stackoverflow.com/a/40008872/1617737
这显示了他如何复制光标。这是他使用getInt
而不是getLong
作为数值sqlitetype。