0

我目前正在尝试使用我的 android 手机访问我的数据库,但它不起作用。它确实适用于模拟器。所以我想知道是否需要通过使用将数据复制到手机的内存中

try{
    InputStream myInput = myContext.getAssets().open(DB_NAME);

    // Path to the just created empty db
    String outFileName = DB_PATH + DB_NAME;

    //Open the empty db as the output stream
    OutputStream myOutput = new FileOutputStream(outFileName);

    //transfer bytes from the inputfile to the outputfile
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer))>0){
        myOutput.write(buffer, 0, length);
    }

    //Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close();
    }catch(SQLiteException e){

另一个问题是我没有使用“SQLiteOpenHelper”,那么上面的方法仍然有效吗?我只是做了一个

   private final String DB_NAME = "MemberData";
private final String TABLE_NAME = "MemberDB";    
sampleDB =  this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
        Cursor c = sampleDB.rawQuery("SELECT companyNameEng FROM " +
                TABLE_NAME + " ORDER BY companyNameEng ASC", null);
4

1 回答 1

0

是的,您必须将 db 文件从 apk 复制到您的应用程序数据库目录(或您的应用程序可以访问的其他位置)。在创建 .apk 文件时,assets 目录并不是真正的目录……它只是框架中的某些函数 ( getAssets()) 知道如何访问的数据。要允许其他需要真实路径的功能工作,您需要将数据复制到设备上的适当目录中。

数据库的通常目的地是“data/data/your.package.name/databases/”。

您的方法看起来可以正常工作……它是标准的 java io。SQLiteOpenHelper 更多的是帮助您进行升级和创建新的数据库。我总是使用一个(即使我最初不需要它,我也不知道我是否会改变我做事的方式),但你当然不必这样做。

于 2012-09-30T14:46:26.003 回答