如何在android studio中连接到sqlite数据库?

时间:2015-12-27 09:41:31

标签: android sqlite android-studio

我使用sql浏览器创建了一个sqlite数据库(mydb.db) 然后我在android应用程序中创建了assets文件夹,并在其上添加了SQLiteDatabase db; db = openOrCreateDatabase("DataBase.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); Cursor c = db.rawQuery("SELECT * FROM user", null); c.moveToFirst(); while(!c.isAfterLast()) { Toast.makeText(this, c.getString(0) + " " + c.getString(1), Toast.LENGTH_SHORT).show(); c.moveToNext(); } db.close(); 文件。

如何连接到此数据库? 我使用此代码,但它无法正常工作。

ng-if

1 个答案:

答案 0 :(得分:1)

您可以使用SQLiteAssetHelper,其中包含首次运行应用时安装预打包数据库所需的所有代码。

您无法直接打开资源文件夹中的文件。您必须将assets文件夹的数据库文件复制到内部/外部存储中,然后使用文件路径打开该文件。

快速查看代码示例以复制数据库:

private void copydatabase() throws IOException {
    //Open your local db as the input stream
    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("/data/data/(packagename)/databases   /(datbasename).sqlite");

    // transfer byte to inputfile to 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();
}

现在您可以使用db之类的:

String mypath = DB_PATH + DB_NAME;
    myDataBase = SQLiteDatabase.openDatabase(mypath, null, SQLiteDatabase.OPEN_READWRITE);