android程序数据迁移sd,Android将项目中的数据库复制到SD

/**

* 拷贝数据库

*

* @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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值