试图将我的sqlite数据库导入Android

时间:2013-08-31 17:12:09

标签: android sqlite import

按照教程here我一直在尝试复制这个,并且我一直在输出流声明行上出错。

我的以下代码在这里:

private void copyDataBase() throws IOException{
                                                                            System.out.println("copyDatabase Start");
    //Open your local db as the input stream
    InputStream myInput = myContext.getAssets().open(DB_NAME);
                                                                            System.out.println("copyDatabase: InputStream Set");
    // Path to the just created empty db
    String outFileName = "/data/data/com.example.sqllitedb_user/databases/";
                                                                            System.out.println("copyDatabase: outFileName:" + outFileName);
    //Open the empty db as the output stream
    OutputStream myOutput = new FileOutputStream(outFileName);
                                                                            System.out.println("copyDatabase: FileOutputStream set to above name");
    //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);
    }
                                                                            System.out.println("copyDatabase: byte buffer thing ran" );
    //Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close();
    System.out.println("copy Database complete");
}

我看到其他一些人遇到了同样的问题,我想知道解决方案是什么。

是否有另一种(更简单的)方法来导入和访问我自己的sqlite表?

IGNORE此帖 - 结果我忘记在我的主要活动上调用初始化方法。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

/**
 * Copies your database from your local assets-folder to the just created
 * empty database in the system folder, from where it can be accessed and
 * handled. This is done by transfering bytestream.
 **/
private void copyDataBase() throws IOException {
    // Open your local db as the input stream
    final InputStream myInput = new FileInputStream(context.getCacheDir().getPath() + "/" + DB_NAME);
        //context.getAssets().open(DB_NAME);

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

    // Open the empty db as the output stream
    final 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();
}