Android不同数据库间,表数据复制

在Android开发项目中,遇到这样的一个问题,在软件升级时,要把旧数据库内的数据拷贝到新的数据库中,

在数据库内,表之间的拷贝大家都知道,很简单

insert into   table_name (aa,bb,cc) select  aa,bb,cc from table_name.

但在Android中,数据库间的数据怎么拷贝呢?在mysql中,可以直接用db_name.table_name的方式,查找另一个数据库的内容,实现如下:

insert into   table_name (aa,bb,cc) select  aa,bb,cc from db_name.table_name.

在Android中呢?

在Android中,我们实现数据库时,常常使用public class SqliteHelper extends SQLiteOpenHelper 这样的方式进行数据库操作。


现在我们通过三步方式实现数据库间表复制

第一步

//初始化创建数据库

sqliteHelper  = new SqliteHelper(.....);

//获取数据库对象

SQLiteDatabase db = sqliteHelper.getWritableDatabase();


第二步数据库附加

把你你想要拷贝数据的数据库附加到当前数据库中,这一步可是关键

//使用attach database ? as userdata,附加数据库

db.execSQL("attach database ? as userdata", new String[] { context.getDatabasePath("userdata.db").getPath() });


第三步表数据拷贝

到了这里,就可以尽情的做你想做的事了。

db.beginTransaction();

String sql = "INSERT INTO " + UserDataMeta.ContactsTable.TABLE_NAME + "("
+ UserDataMeta.ContactsTable._ID + ", "
+ UserDataMeta.ContactsTable.JID + ", "
+ UserDataMeta.ContactsTable.NAME + ", "
+ UserDataMeta.ContactsTable.PINYIN + ", "
+ UserDataMeta.ContactsTable.AVATARID + ", "
+ UserDataMeta.ContactsTable.STATUS + ", "
+ UserDataMeta.ContactsTable.GROUPS + ", "
+ UserDataMeta.ContactsTable.SIGNATURE +") "
+ " SELECT " + UserDataMeta.ContactsTable._ID + ", "
+ UserDataMeta.ContactsTable.JID + ", "
+ UserDataMeta.ContactsTable.NAME + ", "
+ UserDataMeta.ContactsTable.PINYIN + ", "
+ UserDataMeta.ContactsTable.AVATARID + ", "
+ UserDataMeta.ContactsTable.STATUS + ", "
+ UserDataMeta.ContactsTable.GROUPS + ", "
+ UserDataMeta.ContactsTable.SIGNATURE + ""
  + " FROM userdata." + UserDataMeta.ContactsTable.TABLE_NAME;

db.execSQL(sql);

db.setTransactionSuccessful();

欢迎转载,转载时请注明原文地址

http://blog.csdn.net/wh0313/article/details/12868345

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值