繁体   English   中英

Android 打开或创建数据库

[英]Android open or create database

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

07-21 13:33:17.587: 错误/AndroidRuntime(5541): 原因: android.database.sqlite.SQLiteException: 无法打开数据库文件

有谁知道可能是什么原因造成的? 这是我在数据库 class 的 open() 方法中的代码:

File sdcard = Environment.getExternalStorageDirectory();

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

db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);

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

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

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

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

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

参考 这里还有一篇关于检查 state 的 stackoverflow 帖子: 将文本文件写入 SD 卡失败

public static final String DATABASE_PATH=Environment.getExternalStorageDirectory().getAbsolutePath()+"/WebService/Databases/";


private static final String DATABASE_NAME="database_name.db";


SQLiteDatabase db=SQLiteDatabase.openDatabase(DATABASE_PATH+DATABASE_NAME,null,SQLiteDatabase.CREATE_IF_NECESSARY | SQLiteDatabase.OPEN_READWRITE);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM