嗨我在android中创建sqlite数据库时遇到了一些问题。
在模拟器上一切正常,我可以创建数据库。但它不适用于实际的机器。当我尝试在手机上调试应用程序时,它无法创建数据库。
所以有人能告诉我发生了什么吗?我需要在Manifest文件中添加任何特殊权限吗?我已经尝试过ACCESS_CHECKIN_PROPERTIES或WRITE_EXTERNAL_STORAGE,但仍然无法获取数据库。
顺便说一下,自定义数据库是否只能存储在SD卡中,而是根目录?
非常感谢!!
答案 0 :(得分:15)
如果错误中没有任何反馈,则无法告诉您代码中的错误。不过,我可以告诉你,不需要ACCESS_CHECKIN_PROPERTIES
才能使用自己的数据库。除非您尝试访问SD卡,否则不应该WRITE_EXTERNAL_STORAGE
。
默认情况下,数据库存储在内部存储中app文件夹的子文件夹中,即:
/data/data/YOUR_APP/databases/YOUR_DATABASAE.db
如果你在物理设备上这样做,它必须扎根。
答案 1 :(得分:3)
我有完全相同的问题。我的应用程序将在模拟器上创建一个数据库,读取和写入数据,但在设备上它会崩溃。
我找到了一个非常简单的解决方案:在/data/data/YOUR_APP/databases/YOUR_DATABASAE.db上手动删除设备上的数据库,然后重新运行您的应用。
在我的案例中工作,希望它有所帮助。
答案 2 :(得分:2)
它很容易解决您必须没有在db java文件中声明的DataBase Name中添加.db扩展名
例如,public static final String DB_NAME = "tasks.db";
不要忘记.db扩展
答案 3 :(得分:1)
也许您遇到此问题,因为您的手机上安装了prevoius版本的应用。在安装新版本之前,请尝试通过“应用程序管理器”卸载之前的版本。我这样解决了。
答案 4 :(得分:1)
在第一次检查权限和运行时获取权限时,但由于targetSdkVersion为25,问题未解决, 使用db而不使用.db的EXTENSION总是很好并且工作,但它看起来25的targetSdkVersion需要扩展.db 我的问题解决了。
答案 5 :(得分:0)
我已从设置中清除了应用程序中的应用程序数据,然后卸载并运行该应用程序,并使用.db扩展名重命名了db文件,