Android数据库更新——上万条数据的插入

在实际情况下,很可能遇到会向一个表中插入10万条数据,而这样的数据库更新,如果用寻常的方式,在SQLiteOpenHelper.onUpdate()方法中不断的执行SQL语句,那么效率是可想而知的,甚至可能造成整个应用的崩溃!

解决方案:

遇到这种情况,其解决方案应为,用做好的db文件替换之前的数据库文件。当然,有人可能有疑问,这样的话,怎么写入到data/data目录下。这个的确是个问题,可是,我们可以将该数据库存放在SD卡目录下。当然,数据库存放在SD卡目录中,的确是对安全性的妥协。

实现步骤:

  1. 制作db文件,工具可以是navicat for SQLite等;

  2. 将该文件存放在res/raw目录下
  3. 在SQLiteOpenHelper.onUpdate()方法中,删除之前的数据库文件
  4. 在代码中调用到SQLiteOpenHelper.getReadableDatabase()等方法时,如果该数据库不存在,就会调用SQLiteOpenHelper.onCreate()方法创建数据库。
  5. 在SQLiteOpenHelper.onCreate()方法中,我们与一般的使用SQL语句建表不一样,这里直接将raw文件夹下的数据库文件复制到对应的路径下即可。

总结:

以上的解决方案可以提升更新数据库性能。

时间: 2024-11-06 22:46:28

Android数据库更新——上万条数据的插入的相关文章

Android数据库更新并保留原来数据的实现

Android应用程序更新的时候如果数据库修改了字段需要更新数据库,并且保留原来的数据库数据: 这是原有的数据库表 CREATE_BOOK = "create table book(bookId integer primarykey,bookName text);"; 然后我们增加一个字段: CREATE_BOOK = "create table book(bookId integer primarykey,bookName text,bookContent text);&q

插入数据库 每次1000条数据

$sql = "insert into `elconlist` (`ecgrouid`,`elcono`) VALUES"; for($i = 0; $i < $ecnum; $i++){ //拼装SQL if($i != $ecnum-1){ if((float)($i+1)%1000 != 0){ $sql .= "(".$ecgrouid.",'".$this->creatElcono($comid)."'),&quo

数据库操作,同时更新多条数据

无论是更新一条或多条数据,先要对更新情况进行分类: 1.只更新一条数据 $where = 1; $name = Jack; $db->where('id',$where)->update(['name',$name]); 2.更新多条数据,更新条件相同 $where = $valid; $name = Jack; $db->where('valid',$where)->update(['name',$name]); 3.更新多条数据,更新条件不同 数据表如图. (1)若要同时更新'

mybaits 如果数据库中有这条数据就修改,如果没有就新增

有的时候会接到这样的需求:如果数据库中有这条数据就修改,如果没有就修改. 在之前接到这个需求,首先思路是:先到数据查询有没有这条数据,有的话就走修改,没有的话就走新增. 之后找到了这种解决方案:贴出来分享一下 merge into table p using (select '${column}' columnfrom dual) d on  (d.column= p.column) when matched then update 语句 when not matched then insert

往数据库插入上万条数据避免服务器崩溃

<?php //mysql执行时间 ini_set('max_execution_time', '0'); ignore_user_abort(TRUE); //如果客户端断开连接,不会引起脚本abort //链接数据库:链接的服务器,拥有服务器进程的用户的名称,密码 $con[email protected]mysql_connect("localhost","root","root"); // 判断数据库是否连接 if(!$con){

mysql数据库删除千万条数据的操作方案,直接delete会很久

在线上有一张表很大,积累了几年的消费数据,现在需要把这张表几年前的数据给清掉,数据量将近1亿,直接按年份将其中的数据delete,你会发现删了几小时都没有返回.这是因为每执行一次delete,需要同时将该行的删除操作记录作为事务记录在日志中保存以便进行回滚. ? ?最终采用的方案是: ? ? (1)抽取需要保留的数据到备份表中, ? ? (2)truncate旧表 ? ? (3)备份表中的数据再插入truncate表 我的执行实操如下: CREATE TABLE charging_record_

如何在mysql数据库生成百万条数据来测试页面加载速度

1.首先复制一条sql 在复制前,需要确定该记录是否有主键 若无,则代码非常简单, insert into gl_energy_meter_data SELECT * from gl_energy_meter_data where dosage="12432"; 复制的表名↑                                              粘贴的表名↑                        ↑ 某个字段的值最好唯一 若有主键,一般是ID,则需要随机生成

同一对象多条数据同时插入数据库

执行插入的存储过程 ALTER PROC [dbo].[proc_Products_InfoUpdate] @FminAmount VARCHAR(MAX), @FmaxAmount VARCHAR(MAX), @FrateFloating VARCHAR(MAX) AS INSERT INTO dbo.Rate_Floating(bakProcId,minAmount,maxAmount,rateFloating) SELECT @id,A.istr,B.istr,C.istr  from d

你应该知道的 Android 数据库更新策略

GreenDao 自带更新的问题 自定义更新 1 自定义更新类 2 关联自定义的 MyOpenHelper 更新数据库 1 新增表 2 更新已有表的字段 21 开源方案 22 发现问题 23 改造以解决问题 跨版本升级 转载请注明出处:(http://blog.csdn.net/my_truelove/article/details/70196028) 访问 ruicb.com,一键抵达我的博客! 在涉及数据库的应用中,我们不可能在应用刚上线时,就提前预知未来需要的字段,只能在后期根据新的需求去