是否有方法可以在我的应用程序中从SD卡创建和使用数据库,而不是/data/data/com.myapp/databases目录?我知道这样做不安全,但是否有特殊限制,例如“SD卡上的数据库大小不能超过2GB”?
谢谢
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());
db.getVersion();
db.execSQL(sql);
db.beginTransaction();
db.endTransaction();
db.setTransactionSuccessful();
db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
你可以使用数据库实现你所期望的所有功能。SQLiteOpenHelper 只是一个包装类,它帮助你完成我们自己总能做到的额外工作。
编辑 关于文件大小限制,我找到了这个链接。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();