Android打开或创建数据库

zzz*_*zzz 5 database sqlite android sd-card

我想在我的SD卡上创建一个数据库.每当我调用SQLiteDatabase.openOrCreateDatabase时,我都会收到错误:

07-21 13:33:17.587:ERROR/AndroidRuntime(5541):引起:android.database.sqlite.SQLiteException:无法打开数据库文件

有谁知道这可能导致什么?这是我在数据库类的open()方法中的代码:

File sdcard = Environment.getExternalStorageDirectory();

String dbfile = sdcard.getAbsolutePath() + File.separator+ "external_sd" + File.separator + Schema.DATABASE_NAME ;

db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
Run Code Online (Sandbox Code Playgroud)

fyr*_*fyr 8

一个可能的错误可能是您没有设置适当的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

但是,将数据存储在SD卡上被认为是不安全的.因为每个有权在sd存储上存储数据的应用程序都可以访问数据库.

编辑:另一个可能的问题是外部存储可能不可用.您需要确保外部存储当前是可写的.一种方法是确定状态getExternalStorageState(参见此处的参考资料).

getExternalStorageState() returns MEDIA_SHARED if the media is present not mounted, and shared via USB mass storage. 
Run Code Online (Sandbox Code Playgroud)

参考.在这里检查状态还有一个stackoverflow帖子:将文本文件写入SD卡失败