Как хранить базу данных sqlite непосредственно на SD-карте
Я хочу создать свою базу данных sqlite в sdcard вместо пути по умолчанию... Я хочу получить доступ ко всем моим данным из SD-карты
Я использовал этот код:
private static class OpenHelper extends SQLiteOpenHelper {
OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
SQLiteDatabase.openOrCreateDatabase("/sdcard/"+DATABASE_NAME,null);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE "
+ TABLE_NAME
+ " (id INTEGER PRIMARY KEY, name TEXT, number TEXT, skypeId TEXT, address TEXT, image BLOB)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
Проблема:
Когда я вижу файл базы данных по умолчанию, я могу видеть все данные и таблицы, но когда я вижу файл базы данных, созданный на SD-карте, он не показывает никаких данных, но только показывает файл базы данных
конструктор IN он создает файл только в sdcard, но по умолчанию он делает все хорошо.....
Как сохранить все Sqlitedata на SD-карте для дальнейшего доступа?
Ответы
Ответ 1
Я создал свою БД с помощью
public DatabaseHelper(final Context context) {
super(context, Environment.getExternalStorageDirectory()
+ File.separator + FILE_DIR
+ File.separator + DATABASE_NAME, null, DATABASE_VERSION);
}
и никаких проблем не было. Я предполагаю, что ваш вызов super() должен также ссылаться на SD-карту.
Ответ 2
Вы предоставляете неполное имя в своем вызове super()
. Попробуйте использовать:
OpenHelper(Context context) {
super(context, "/sdcard/"+DATABASE_NAME, null, DATABASE_VERSION);
SQLiteDatabase.openOrCreateDatabase("/sdcard/"+DATABASE_NAME,null);
}
Кроме этого, вы всегда должны использовать Environment.getExternalStoreDirectory()
, чтобы получить путь к внешнему хранилищу, и вы должны также проверить состояние внешнего хранилища, прежде чем пытаться его использовать.
Ответ 3
public DataBaseHelper(final Context context) {
super(context, Environment.getExternalStorageDirectory()
+ File.separator+ MYDATABASE_NAME, null, MYDATABASE_VERSION);
}
**Also Add permission in android Manifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />**
Ответ 4
Просто укажите путь в конструкторе;
DatabaseHelper(Context context) {
super(context, Environment.getExternalStorageDirectory()
+ File.separator + "/DataBase/" + File.separator
+ DB_NAME, null, DB_VERSION);
}