2011-05-29 52 views
9

您好我在android中创建sqlite数据库有一些问题。创建数据库的Android权限

在模拟器上一切正常,我可以创建数据库。但它在实际的机器上不起作用。当我尝试在手机上调试应用程序时,它只是无法创建数据库。

那么谁能告诉我发生了什么事?我需要在Manifest文件中添加什么特殊权限?我试过ACCESS_CHECKIN_PROPERTIES或WRITE_EXTERNAL_STORAGE,但仍然无法获取数据库。

顺便说一句,自定义数据库只能存储在SD卡,但根目录?

非常感谢!

+2

阅读logcat。它会告诉你问题是什么。 – Aleadam 2011-05-29 04:10:34

+0

本示例应用程序演示了如何使用数据库,它适用于仿真器和设备:https://github.com/commonsguy/cw-android/tree/master/Database/Constants – CommonsWare 2011-05-29 11:06:17

+0

非常感谢大家。我已经解决了它。问题是仿真器不需要扩展“.db”,而实际的手机需要它。 – 4af2e9eb6 2012-05-20 23:04:42

回答

13

对错误没有任何反馈,不可能告诉你代码中有什么问题。不过,我可以告诉你,你需要使用自己的数据库而不是需要ACCESS_CHECKIN_PROPERTIES。除非您尝试访问SD卡,否则您不应该需要WRITE_EXTERNAL_STORAGE

的数据库默认存储在您的应用程序文件夹中的内部存储的子文件夹,即:

/data/data/YOUR_APP/databases/YOUR_DATABASAE.db 

如果你这样做,一个物理设备上它虽然植根。

+0

@Aleadam谢谢Aleadam。这个权限在这里都不起作用。问题是没有这些模拟器上的权限,我可以创建数据库并使用游标获取记录。我无法在手机上完成。那么你能告诉我为什么? – 4af2e9eb6 2011-05-30 06:48:33

+0

@Kitten不,我不能。出于与昨天相同的原因:**您需要阅读logcat **。请参阅http://developer.android.com/guide/developing/tools/logcat.html或在Eclipse中检查调试透视图。 – Aleadam 2011-05-30 06:52:22

+0

@Aadadam谢谢你们一切!祝你今天愉快!! – 4af2e9eb6 2011-05-30 15:57:20

2

我有完全相同的问题。我的应用程序会在模拟器上创建一个数据库,读取和写入数据,但在设备上时会崩溃。

我找到了一个非常简单的解决方案:在/data/data/YOUR_APP/databases/YOUR_DATABASAE.db手动删除设备上的数据库,然后重新运行您的应用程序。

在我的情况下工作,希望它有帮助。

1

也许你有这个问题,因为你的手机上安装了先前版本的应用程序。在安装新版本之前,尝试通过“应用程序管理器”卸载以前的版本。我以这种方式解决。

1

这很容易解决您必须在DB Java文件 对于如宣布你的数据库名称还没有添加.db扩展名,public static final String DB_NAME = "tasks.db";

不要忘了.db扩展

+0

没关系。数据库名称几乎可以是任何东西。 – laalto 2016-07-11 19:37:30

+0

它为我工作。 – 2016-07-19 16:07:25

0

在首先我检查权限和运行时获得权限,但由于targetSdkVersion是25,问题未解决, 与db一起工作而不使用.db的EXTENSION总是很好用,但它看起来像targetSdkVersion的25需要.db的EXTENSION 和我的问题解决了。

相关问题