Как сохранить базу данных sqlite непосредственно на SD-карте

Я хочу создать свою базу данных sqlite в sdcard, а не путь по умолчанию … Я хочу получить доступ ко всем моим данным из sdcard, также я использовал этот код:

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-карте для дальнейшего доступа?

Я создал свою БД с помощью

  public DatabaseHelper(final Context context) { super(context, Environment.getExternalStorageDirectory() + File.separator + FILE_DIR + File.separator + DATABASE_NAME, null, DATABASE_VERSION); } 

И больше не было никаких проблем. Я предполагаю, что ваш вызов super () должен также ссылаться на SD-карту.

Вы предоставляете неполное имя в своем вызове super() . Попробуйте использовать:

 OpenHelper(Context context) { super(context, "/sdcard/"+DATABASE_NAME, null, DATABASE_VERSION); SQLiteDatabase.openOrCreateDatabase("/sdcard/"+DATABASE_NAME,null); } 

Кроме этого, вы всегда должны использовать Environment.getExternalStoreDirectory() чтобы получить путь к внешнему хранилищу, и перед тем, как попытаться его использовать, вы также должны проверить состояние внешнего хранилища.

 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" />** 

Просто укажите путь в конструкторе;

  DatabaseHelper(Context context) { super(context, Environment.getExternalStorageDirectory() + File.separator + "/DataBase/" + File.separator + DB_NAME, null, DB_VERSION); }