• 將導入有數據的sqlite與apk一起安裝到手機上

    0
    Android SQLite Java C/C++ 10392 次瀏覽

    sqlite比較常規的使用方式一般是這樣的,就是在程序中新建一個空的數據庫,然后進行增刪改查等一系列的操作,這樣的操作,對于小應用的開發是 比較容易滿足需求的,但是有些比較大的應用,包含的數據量比較大,如果在程序中,對數據進行一條一條的插入,第一,比較耗時,第二,用戶體驗很差,最重要 的一點是顯得很不專業。那么,可以想到的一種比較好的方式,就是如何將db文件與apk一起安裝到手機上呢,實現方法如下:

    首先,要有包含數據的sqlite文件,是db類型的,可以是你之前一條一條導入的,然后找到手機路徑下/data/data/包名/database文件,將其導出就可以了;

    然后,再android工程里找到assets目錄,將db類型的文件放在該目錄下面,準備就緒之后,上代碼

        public static SQLiteDatabase database;      
        String DB_PATH = "/data/data/com.example.mymap/databases/";  
                String DB_NAME = "wifi.db";  
          
          
                // 檢查 SQLite 數據庫文件是否存在  
                if ((new File(DB_PATH + DB_NAME)).exists() == false) {  
                    // 如 SQLite 數據庫文件不存在,再檢查一下 database 目錄是否存在  
                    File f = new File(DB_PATH);  
                    // 如 database 目錄不存在,新建該目錄  
                    if (!f.exists()) {  
                        f.mkdir();  
                    }  
          
          
                    try {  
                        // 得到 assets 目錄下我們實現準備好的 SQLite 數據庫作為輸入流  
                        InputStream is = getBaseContext().getAssets().open(DB_NAME);  
                        // 輸出流  
                        OutputStream os = new FileOutputStream(DB_PATH + DB_NAME);  
          
          
                        // 文件寫入  
                        byte[] buffer = new byte[1024];  
                        int length;  
                        while ((length = is.read(buffer)) > 0) {  
                            os.write(buffer, 0, length);  
                        }  
          
          
                        // 關閉文件流  
                        os.flush();  
                        os.close();  
                        is.close();  
                    } catch (Exception e) {  
                        e.printStackTrace();  
                    }  
                }  
          
          
                // 下面測試 /data/data/com.test.db/databases/ 下的數據庫是否能正常工作  
                database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, null);  
                Cursor cursor = database.rawQuery("select * from wifi_private", null);//這句話沒通過  
                 Log.v("111","111");  
                if (cursor.getCount() > 0) {  
                    cursor.moveToFirst();  
                    // 解決中文亂碼問題  
                    String SSID = cursor.getString(cursor.getColumnIndex("SSID"));   
                    //byte test[] = cursor.getBlob(0);  
                    //String strtest = new String(test, "utf-8").trim();  
          
          
                    // 看輸出的信息是否正確  
                    Log.v("SSID",""+SSID);  
                }  
                cursor.close();  
                  
                Log.v("222","222");   
    這樣一來 數據庫就導入成功了,需要注意的一點,該導入進去的數據庫并不會和你程序中創建的數據庫產生沖突(只要數據庫名不同,表名相不相同無所謂),所以,有些數據是安裝程序的同時導入,有些數據也可以在程序中根據用戶個人的操作進行添加,并不會產生沖突。

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色