Android - база данных SQLite на SD-карте - PullRequest
4 голосов
/ 29 августа 2011

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

Спасибо

Hmyzak

Ответы [ 2 ]

6 голосов
/ 29 августа 2011

он является предложенным решением, которое я нашел в 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?

0 голосов
/ 29 июня 2016

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

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...