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

本文介绍了一种在Android应用中实现数据库间表数据复制的方法。通过附加旧数据库并使用SQL语句将数据从旧数据库迁移到新数据库的具体步骤被详细阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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.youkuaiyun.com/wh0313/article/details/12868345

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值