亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

如何導入已有數據庫

//我已經有數據庫了,如何導入并查詢呢

正在回答

1 回答

操作方法:1. 把原數據庫包括在項目源碼的 res/raw 目錄下,然后建立一個DBManager類,代碼如下:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758package?com.android.ImportDatabase;?import?java.io.File;import?java.io.FileNotFoundException;import?java.io.FileOutputStream;import?java.io.IOException;import?java.io.InputStream;?import?android.content.Context;import?android.database.sqlite.SQLiteDatabase;import?android.os.Environment;import?android.util.Log;?public?class?DBManager {????private?final?int?BUFFER_SIZE = 400000;????public?static?final?String DB_NAME = "countries.db"; //保存的數據庫文件名????public?static?final?String PACKAGE_NAME = "com.android.ImportDatabase";????public?static?final?String DB_PATH = "/data"????????????+ Environment.getDataDirectory().getAbsolutePath() + "/"????????????+ PACKAGE_NAME;? //在手機里存放數據庫的位置?????private?SQLiteDatabase database;????private?Context context;?????DBManager(Context context) {????????this.context = context;????}?????public?void?openDatabase() {????????this.database = this.openDatabase(DB_PATH + "/"?+ DB_NAME);????}?????private?SQLiteDatabase openDatabase(String dbfile) {????????try?{????????????if?(!(new?File(dbfile).exists())) {  //判斷數據庫文件是否存在,若不存在則執行導入,否則直接打開數據庫????????????????InputStream is = this.context.getResources().openRawResource(????????????????????????R.raw.countries); //欲導入的數據庫????????????????FileOutputStream fos = new?FileOutputStream(dbfile);????????????????byte[] buffer = new?byte[BUFFER_SIZE];????????????????int?count = 0;????????????????while?((count = is.read(buffer)) > 0) {????????????????????fos.write(buffer, 0, count);????????????????}????????????????fos.close();????????????????is.close();????????????}????????????SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,????????????????????null);????????????return?db;????????} catch?(FileNotFoundException e) {????????????Log.e("Database", "File not found");????????????e.printStackTrace();????????} catch?(IOException e) {????????????Log.e("Database", "IO exception");????????????e.printStackTrace();????????}????????return?null;????}


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

如何導入已有數據庫

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號