how to connect to sqlite database in android studio?
本问题已经有最佳答案,请猛点这里访问。
我使用sql浏览器创建了一个sqlite数据库(mydb.db)
然后我在android应用程序中创建了assets文件夹,并在其上添加了
如何连接到这个数据库?
我使用此代码,但它无法正常工作。
1 2 3 4 5 6 7 8 9 10 11 | 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(); |
您可以使用SQLiteAssetHelper,它具有在您的应用首次运行时安装预打包数据库所需的所有代码。
您无法直接打开assets文件夹中的文件。 您必须将assets文件夹的数据库文件复制到内部/外部存储,然后使用文件路径打开该文件。
快速查看代码示例以复制数据库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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了:
1 2 | String mypath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(mypath, null, SQLiteDatabase.OPEN_READWRITE); |