这将是一篇很长的文章,但请务必阅读至结尾并提供帮助。谢谢!
上一篇文章的继续,[Android Studio - Database file loaded in the wrong encoding: 'UTF-8'我的应用程序在手机和仿真器上都运行正常,尽管存在编码错误。
但是,我现在面临新的问题,我只想澄清原因。
请稍等,我正在将DB Browser用于SQLite和Android Studio(3.2.1)。我的手机是Samsung S7 Edge +,而我使用的仿真器是Pixel 2 XL API 28(Android 9,API 28)。
。新数据是标题为“ IIDS”,“ FIDS”和“ GMID”的数据。注意这两个电话的屏幕截图,实际的电话屏幕截图在“旅客终端”处停止了,进一步向下滚动时,没有显示新数据,但是在电话模拟器上,显示了新数据。
最初,我认为这可能是大小问题,因此我相应地最小化了文本大小,但问题仍然存在。我想不出其他可能的原因。
这样,有谁知道可能导致此问题的原因以及我该如何解决?任何帮助是极大的赞赏!
答案 0 :(得分:0)
最初的问题是由于数据库已经存在,因此资产文件夹中的副本未完成。
删除数据库(删除应用程序的数据或卸载应用程序)将导致从资产文件夹复制数据库。
但是,然后您遇到了版本号问题。我认为这是因为该应用程序已更改为使用数据库版本2(实际上是从SQLite的角度来看user_version)。因此,由于版本不是1(我怀疑是否是1,所以不进行任何版本检查,因此为什么连版本都没有(如注释所示)),则尝试检查数据库的版本,结果是空指针异常,因为没有设置user_version(可能是一个错误)。
如果您(在开发应用程序时)重新引入从资产文件夹复制的已更改数据库,则基本上不想将数据库版本从1更改。或者,您需要设置在将数据库复制到资产文件夹之前,使用数据库中的PRAGMA user_version=?
使用适当的版本(其中?是版本号),然后使用您使用的任何工具。
为什么要运行onUpgrade
方法,才是增加数据库版本(安卓系统)的唯一原因。
已做出注意假设,以重新检查版本号。
如果您发布了应用程序,那么将更改后的数据库作为资产推出可能要复杂得多。