Android将项目中的数据库复制到SD

  • 将数据库文件放到assets下
  • 编写代码
	/**
	 * 拷贝数据库
	 * 
	 * @param ctx
	 * @param isNew
	 */
	public void copyDatabase(Context ctx, boolean isNew) {
		// 是否初始化数据库
		if(isNew){
		    // 检查 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 = ctx.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();
		        }
		    }
		}
	}
  • 两个重要的变量:
	// 数据库路径
	final static String DB_PATH = "/data/data/com.example.test/database/";
	// 数据库名称
	final static String DB_NAME = "ywyd.sqlite";
  • 测试是否成功:
public void testData(){
		// 下面测试 /data/data/com.test.db/databases/ 下的数据库是否能正常工作
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, null);
        Cursor cursor = database.rawQuery("select * from sys_config", null);
        if (cursor.getCount() > 0) {
            cursor.moveToFirst();
			String strtest = cursor.getString(3);
			// 看输出的信息是否正确
			System.out.println(strtest);
        }
        cursor.close();
	}
  • 在Activity中调用:
SqlLiteHelper helper = new SqlLiteHelper();
		helper.copyDatabase(this.getBaseContext(), true);
		//helper.testData();
  • 原文地址 http://blog.csdn.net/yueritian/article/details/46471669

你可能感兴趣的:(android,sqlite,复制,打包,SD卡)