在Assets文件夾中放入.sql或.db文件實現創建SQlite表的操作

在Assets文件夾中放入.sql或.db文件實現創建SQlite表的操作

    /**
     * 讀取數據庫文件(.sql),並執行sql語句,sql文件中不能有註釋等其他語句,只能是純sql語句,單個sql語句不能太長(執行條目在500左),不然會報 too many terms in compound SELECT, 在執行sql時要使用事務來加快執行
     * */
    private void executeAssetsSQL(SQLiteDatabase db, String fileName) {
        BufferedReader in = null;
        try {
            db.beginTransaction();
            in = new BufferedReader(new InputStreamReader(mContext.getAssets()
                    .open(fileName)));
            String line;
            StringBuilder buffer = new StringBuilder();
            while ((line = in.readLine()) != null) {
                buffer.append(line);
                if (line.trim().endsWith(";")) {
                    db.execSQL(buffer.toString.replace(";", ""));// 去掉sql中的;android執行sql語句不能帶;
                    buffer.setLength(0);
                }
            }
            db.setTransactionSuccessful();
        } catch (IOException e) {
            Log.e("db-error", e.toString());
        } finally {
            db.endTransaction();
            try {
                if (in != null)
                    in.close();
            } catch (IOException e) {
                Log.e("db-error", e.toString());
            }
        }
    }
或者把生成好的db文件直接拷貝到項目數據庫目錄下,要先使用sqliteDatabse.openOrCreateDatabase(context.getDataBasePath("ss.db").getAbstarctPath(),null);生成一個數據庫文件,把生成的文件導出,然後pc上導入數據到該文件,最後再把該文件放到assets目錄下複製文件到數據庫目錄下,就可正常使用,android自動生成的數據庫會比用其他工具生成的多些東西,不能直接使用其他工具生成的文件
發佈了46 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章