SQLite没有将我的ID保存在Android应用程序中

框架91

一个简单的问题让我陷入了数小时的困境...

当我通过db.insert(TABLE_NAME,null,myValues)向数据库中添加一个值时,将返回该项目的新ID。

恰好在此通话之后,我想更新我的条目。因此我打电话给db.update(TABLE_NAME, values, MY_ID_NAME + " = " + returnedId, null)我希望得到1个返回值,因为一个条目受此更新影响。

但是,我得到0。我的ID根本没有保存到数据库中。如果我尝试更复杂的查询,我总是会得到我需要的每个值,但id始终为0。

我不知道如何找到我的错误-我得到一个游标,尝试获取ID,long id = cursor.getLong(0)它将返回0。

我的CreateStatement以以下内容开头:

"CREATE TABLE " + TABLE_NAME + "("+ MY_ID_NAME + " LONG PRIMARY KEY, "....

我还需要提到我出于测试目的而在内存数据库中工作。

什么不见​​了?我究竟做错了什么?

另外:我决定只从一开始就通过Singleton-Pattern打开数据库-到目前为止,这不是问题

Edit2:我也忘记提及的是,我目前正在InstrumentationTestCase环境中进行某些单元测试。

框架91

经过数小时的测试和调试,Zolnoor的答案几乎是正确的:

SQLite不允许使用LONG PRIMARY KEY语句,但允许使用SQLite-Documentation中INTEGER PRIMARY KEY所述语句

使用rowid值作为键,rowid表的数据存储为B树结构,其中每个表行包含一个条目。这意味着按rowid检索或排序记录很快。搜索具有特定rowid的记录,或搜索具有指定范围内的rowid的所有记录的速度大约是通过指定任何其他PRIMARY KEY或索引值进行的类似搜索的两倍。

除了下面提到的一个例外,如果rowid表的主键由单个列组成,并且该列的声明类型为大写和小写形式的INTEGER ”,则该列将成为rowid的别名。这样的列通常称为“整数主键”。仅当声明的类型名称恰好是“ INTEGER”时,PRIMARY KEY列才成为整数主键。其他整数类型名称(例如“ INT”或“ BIGINT”或“ SHORT INTEGER”或“ UNSIGNED INTEGER”)会导致主键列的行为与具有整数相似性和唯一索引的普通表列相同,而不是作为rowid的别名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有简单的方法可以将我的Apple应用程序转换为android应用程序?

来自分类Dev

我可以将我的应用程序用户的数据保存在文件而不是数据库中吗

来自分类Dev

我应该从我的应用程序将哪些数据保存在Sqlite数据库中?

来自分类Dev

GEM回形针将我的图像保存在公共/系统中,而不是应用程序/资产/图像中

来自分类Dev

如何知道是否有人将我的网站嵌入到 Android 应用程序中?

来自分类Dev

在Android应用程序中,新的SQLite记录将保存在文件系统中的什么位置?

来自分类Dev

我有此应用程序供您拍照,并保存在图库中,但是拍照后没有出现,我必须重新启动设备

来自分类Dev

如何在android studio中截取屏幕截图或将我的片段应用程序保存为图像

来自分类Dev

有没有办法让本机应用程序将我重定向到网站

来自分类Dev

为什么我的应用程序/ apk没有保存到测试的android设备上?

来自分类Dev

我不能在Android应用程序中将对象保存到sqlite中吗

来自分类Dev

使用InstallShield安装我的应用程序后,我的sqlite .db文件被保存在AppData目录中。这是为什么?

来自分类Dev

从Android应用程序将图像保存在Django中

来自分类Dev

我的应用程序没有客户ID?

来自分类Dev

Android:拦截意图后,将我的活动附加到开启程序应用程序中

来自分类Dev

有一种简单的方法可以将我的Apple应用程序转换为android应用程序吗?

来自分类Dev

SortableJS没有将我的排序待办事项列表保存在localStorage中

来自分类Dev

ANDROID将我的应用程序与Waze集成

来自分类Dev

如何将我的应用程序从一页重定向到另一页而又不丢失我在android中的ID和密码

来自分类Dev

我的应用程序没有刷新

来自分类Dev

将我的android应用程序签名为系统应用程序

来自分类Dev

如何将我的应用程序转换为Android TV应用程序?

来自分类Dev

将我的android应用程序签名为系统应用程序

来自分类Dev

没有安装Qt不能将我的Quick 2应用程序部署到Windows系统

来自分类Dev

将我的应用程序升级到Windows Phone 8.1。在TextBox / PasswordBox上仍然没有PlaceholderText

来自分类Dev

如何快速保存在应用程序主目录中的sqlite文件?

来自分类Dev

我的应用程序如何在Android 4.0中分配更多的堆内存?(我的应用程序没有足够的内存)

来自分类Dev

在我的应用程序中拍照并将其保存在图库中

来自分类Dev

没有GUI的Android应用程序

Related 相关文章

  1. 1

    有没有简单的方法可以将我的Apple应用程序转换为android应用程序?

  2. 2

    我可以将我的应用程序用户的数据保存在文件而不是数据库中吗

  3. 3

    我应该从我的应用程序将哪些数据保存在Sqlite数据库中?

  4. 4

    GEM回形针将我的图像保存在公共/系统中,而不是应用程序/资产/图像中

  5. 5

    如何知道是否有人将我的网站嵌入到 Android 应用程序中?

  6. 6

    在Android应用程序中,新的SQLite记录将保存在文件系统中的什么位置?

  7. 7

    我有此应用程序供您拍照,并保存在图库中,但是拍照后没有出现,我必须重新启动设备

  8. 8

    如何在android studio中截取屏幕截图或将我的片段应用程序保存为图像

  9. 9

    有没有办法让本机应用程序将我重定向到网站

  10. 10

    为什么我的应用程序/ apk没有保存到测试的android设备上?

  11. 11

    我不能在Android应用程序中将对象保存到sqlite中吗

  12. 12

    使用InstallShield安装我的应用程序后,我的sqlite .db文件被保存在AppData目录中。这是为什么?

  13. 13

    从Android应用程序将图像保存在Django中

  14. 14

    我的应用程序没有客户ID?

  15. 15

    Android:拦截意图后,将我的活动附加到开启程序应用程序中

  16. 16

    有一种简单的方法可以将我的Apple应用程序转换为android应用程序吗?

  17. 17

    SortableJS没有将我的排序待办事项列表保存在localStorage中

  18. 18

    ANDROID将我的应用程序与Waze集成

  19. 19

    如何将我的应用程序从一页重定向到另一页而又不丢失我在android中的ID和密码

  20. 20

    我的应用程序没有刷新

  21. 21

    将我的android应用程序签名为系统应用程序

  22. 22

    如何将我的应用程序转换为Android TV应用程序?

  23. 23

    将我的android应用程序签名为系统应用程序

  24. 24

    没有安装Qt不能将我的Quick 2应用程序部署到Windows系统

  25. 25

    将我的应用程序升级到Windows Phone 8.1。在TextBox / PasswordBox上仍然没有PlaceholderText

  26. 26

    如何快速保存在应用程序主目录中的sqlite文件?

  27. 27

    我的应用程序如何在Android 4.0中分配更多的堆内存?(我的应用程序没有足够的内存)

  28. 28

    在我的应用程序中拍照并将其保存在图库中

  29. 29

    没有GUI的Android应用程序

热门标签

归档