android 读取assets下的*.sql并执行sql语句

来源:互联网 发布:sem跟seo的比较区别 编辑:程序博客网 时间:2024/06/05 02:29

首先推荐一款操作sqlite工具
https://sqlitestudio.pl/index.rvt
支持中文
你可以用这个工具从*.db文件导出*.sql文件

进入正题************
关键代码:

    /**     * 读取数据库文件(.sql),并执行sql语句     * @param db     * @param dbfilepath assets下的*.sql文件路径,比如 acupointsdb/acupoints.sql     */    public void executeAssetsSQL(SQLiteDatabase db, String dbfilepath) {        BufferedReader in = null;        try {            in = new BufferedReader(new InputStreamReader(getAssets().open(dbfilepath)));            System.out.println("路径:" + dbfilepath);            String line;            String buffer = "";            //开启事务            db.beginTransaction();            while ((line = in.readLine()) != null) {                buffer += line;                if (line.trim().endsWith(";")) {                    db.execSQL(buffer.replace(";", ""));                    buffer = "";                }            }            //设置事务标志为成功,当结束事务时就会提交事务            db.setTransactionSuccessful();        } catch (Exception e) {            Log.e("db-error", e.toString());        } finally {            //事务结束            db.endTransaction();            try {                if (in != null)                    in.close();            } catch (Exception e) {                Log.e("db-error", e.toString());            }        }    }

比如,我的*.sql文件位于assets/acupointsdb/acupoints.sql
使用代码:

 MyApplication.getInstance().executeAssetsSQL(db, "acupointsdb/acupoints.sql");
原创粉丝点击