Android - SD卡上的SQLite数据库

6

是否有方法可以在我的应用程序中从SD卡创建和使用数据库,而不是/data/data/com.myapp/databases目录?我知道这样做不安全,但是否有特殊限制,例如“SD卡上的数据库大小不能超过2GB”?

谢谢

Hmyzak

2个回答

9

他是我在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 只是一个包装类,它帮助你完成我们自己总能做到的额外工作。

编辑 关于文件大小限制,我找到了这个链接。Android Honeycomb 上是否有文件大小限制?


3
不错,但如何与定义我的数据库的SQLiteOpenHelper类一起使用呢? - Waypoint
@WayPoint,在我的情况下,我不需要另一个块或助手,使用上述方法可以轻松完成所有工作,谢谢。@samuel,整天苦苦挣扎,最终我找到了它,感谢真主。 - Noor Hossain

0
你可以使用这个类:
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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接