Android – база данных SQLite на SD-карте

Есть ли способ, как создавать и использовать базу данных с SD-карты в моем приложении вместо каталога /data/data/com.myapp/databases? Я знаю, что это небезопасно, но существуют ли какие-либо специальные ограничения, такие как «база данных на SD-карте не может быть больше 2 ГБ»?

благодаря

Hmyzak

Он является предлагаемым решением, которое я нашел в stackoverflow

File dbfile = new File("/sdcard/android/com.myapp/databases/mydatabase.db" ); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); System.out.println("Its open? " + db.isOpen()); 

Вот ссылка .

ОБНОВИТЬ

Я не уверен, что вы можете использовать это вместе с SQLiteOpenHelper, но вы можете запросить объект базы данных.

 db.getVersion(); db.execSQL(sql); db.beginTransaction(); db.endTransaction(); db.setTransactionSuccessful(); db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy); 

Вы можете делать все, что вы ожидаете с помощью базы данных. SQLiteOpenHelper только в классе-оболочке, который помогает вам дополнительно, что мы всегда можем делать самостоятельно.

EDIT, что касается вашего ограничения размера файла, я нашел эту ссылку. Есть ли ограничение на размер файла на Android Honeycomb?

Вы можете использовать этот класс:

 public class ExternalDBHelper extends SQLiteOpenHelper { public ExternalDBHelper(Context context, String DATABASE_NAME, int DATABASE_VERSION) { super(context, DirectoryManager.getDir(context, DirectoryManager.ChildDir.Databases, DirectoryManager.ForcePath.SDCard) + DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } } 

Использование:

  ExternalDBHelper helper = new ExternalDBHelper(context,dbName, CLeitner.Constant.DATABASE_VERSION); SQLiteDatabase db = helper.getWritableDatabase();