Android - SD卡上的SQLite数据库

时间:2011-08-29 08:29:08

标签: android database sqlite

有什么办法,如何在我的应用程序中使用SD卡创建和使用数据库而不是/data/data/com.myapp/databases目录?我知道这是不安全的,但是有没有特别的限制,比如“SD卡上的数据库不能大于2GB”?

由于

Hmyzak

2 个答案:

答案 0 :(得分:6)

他是我在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());

这是 link

<强>更新

我不确定您是否可以将它与SQLiteOpenHelper一起使用,但您确定可以查询数据库对象。

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

你可以用数据库做你期望的所有事情。 SQLiteOpenHelper只在一个包装器类中,它可以帮助你自己做的额外的事情。

修改 至于你的文件大小限制我找到了这个链接。 Is there a file size limit on Android Honeycomb?

答案 1 :(得分: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();