将外部sqlite3数据库导入到Android项目中(android studio)

来源:互联网 发布:海湾主机编程软件 编辑:程序博客网 时间:2024/04/28 04:39

第一步:将数据库文件放入到assets目录中。注意android studio需要将assets目录建在main项目下。即和java,res等文件夹是同级的。


第二步:首次使用app,将assets目录下的数据库文件加载到android手机的sd下



    /**     * 见assets目录下的文件拷贝到sd上     * @return 存储数据库的地址     */    // 复制和加载区域数据库中的数据    public static String  CopySqliteFileFromRawToDatabases(String SqliteFileName) throws IOException {        // 第一次运行应用程序时,加载数据库到data/data/当前包的名称/database/<db_name>        File dir = new File("data/data/" + MyApplication.getContext().getPackageName() + "/databases");        LogUtil.i("!dir.exists()=" + !dir.exists());        LogUtil.i("!dir.isDirectory()=" + !dir.isDirectory());        if (!dir.exists() || !dir.isDirectory()) {            dir.mkdir();        }        File file= new File(dir, SqliteFileName);        InputStream inputStream = null;        OutputStream outputStream =null;        //通过IO流的方式,将assets目录下的数据库文件,写入到SD卡中。        if (!file.exists()) {            try {                file.createNewFile();                inputStream = MyApplication.getContext().getClass().getClassLoader().getResourceAsStream("assets/" + SqliteFileName);                outputStream = new FileOutputStream(file);                byte[] buffer = new byte[1024];                int len ;                while ((len = inputStream.read(buffer)) != -1) {                    outputStream.write(buffer,0,len);                }            } catch (IOException e) {                e.printStackTrace();            }            finally {                if (outputStream != null) {                        outputStream.flush();                        outputStream.close();                    }                if (inputStream != null) {                    inputStream.close();                }                }            }        return file.getPath();        }



第三不:使用sd下的数据库文件。


    /**     * 获取全国的省份     *     * @return     */    public void getProvincesFromSQLite() {        SQLiteDatabase sqLiteDatabase = SQLiteDatabase.openDatabase(sqliePath, null, SQLiteDatabase.OPEN_READONLY);        Cursor cursor = sqLiteDatabase.rawQuery("SELECT * from T_Province", null);        provincesList.clear();        if (cursor.moveToFirst()) {            do {                String proSort = cursor.getString(cursor.getColumnIndex("ProSort"));                String proName = cursor.getString(cursor.getColumnIndex("ProName"));                provincesList.add(new Province(proSort,proName));            }while (cursor.moveToNext());            cursor.close();        }        provinceAdapter.notifyDataSetChanged();    }




0 0
原创粉丝点击