热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android开发分享在Android设备上批量插入

我想在我的下一次升级时将大约700条logging批量

我想在我的下一次升级时将大约700条logging批量插入到Android数据库中。 什么是最有效的方法来做到这一点? 从各个职位,我知道,如果我使用Insert语句,我应该包装在一个事务。 还有一个关于使用自己的数据库的post ,但我需要这些数据进入我的应用程序的标准Android数据库。 请注意,这只会在每个设备上执行一次。

一些想法:

什么是最好的方法? 还有其他的方式来加载数据? 3和4甚至可能吗?

    我不相信有任何可行的方法来完成你的名单上的#3或#4。

    在其他解决scheme中,列出了两个数据文件包含直接SQL的数据库,另一个包含非SQL格式的数据。

    三者都可以正常工作,但后一种从格式化文件中获取数据并自行构buildSQL的build议似乎是最干净的。 如果在以后的date添加了真正的批量更新function,您的数据文件仍然可用,或者至less可以轻松处理成可用的格式。 而且,创build数据文件更直接,也更不容易出错。 最后,拥有“原始”数据将允许导入其他数据存储格式。

    在任何情况下,您都应该(如您所述)将插入组包装到事务中,以避免创build每行事务日记。

    通常,每次使用db.insert() ,SQLite都会创build一个事务(并在文件系统中生成日志文件),从而减慢速度。

    如果使用db.beginTransaction()db.endTransaction() SQLite将在文件系统上只创build一个日志文件,然后同时提交所有的插入,显着加快速度。

    这里有一些伪代码: 批量插入到Android上的SQLite数据库

     try { db.beginTransaction(); for each record in the list { do_some_processing(); if (line represent a valid entry) { db.insert(SOME_TABLE, null, SOME_VALUE); } some_other_processing(); } db.setTransactionSuccessful(); } catch (SQLException e) {} finally { db.endTransaction(); } 

    如果由于意外错误或其他原因想要中止事务,只需简单地使用db.endTransaction()而不事先将事务设置为成功( db.setTransactionSuccessful() )。

    另一个有用的方法是使用db.inTransaction() (返回truefalse )来确定您当前是否处于事务中间。

    文档在这里

    我发现对于批量插入, DatabaseUtils.InsertHelper类(显然很less使用)比使用SQLiteDatabase.insert快几倍。

    另外两个优化也帮助我的应用程序的性能,但它们可能并不适合所有情况:

    我有一个更详细的博客文章 。

    那么,我的解决scheme,这有点奇怪,但工作正常…我编译大量的数据,并一次性插入(批量插入?)

    我使用db.execSQL(Query)命令,我用下面的语句构build“查询”…

     INSERT INTO yourtable SELECT * FROM ( SELECT 'data1','data2'.... UNION SELECT 'data1','data2'.... UNION SELECT 'data1','data2'.... UNION . . . SELECT 'data1','data2'.... ) 

    唯一的问题是查询的build立可能有点混乱。 我希望它有帮助

    下面的这个例子将完美的工作

    以上就是android开发分享在Android设备上批量插入相关内容,想了解更多android开发(异常处理)及android游戏开发关注(编程笔记)。

      String sql = "INSERT INTO " + DatabaseHelper.TABLE_PRODUCT_LIST + " VALUES (?,?,?,?,?,?,?,?,?);"; SQLiteDatabase db = this.getWritableDatabase(); SQLiteStatement statement = db.compileStatement(sql); db.beginTransaction(); for(int idx=0; idx  


      推荐阅读
      • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
      • android listview OnItemClickListener失效原因
        最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
      • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
      • XML介绍与使用的概述及标签规则
        本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
      • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
      • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
      • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
      • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
      • MyBatis错题分析解析及注意事项
        本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
      • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
        本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
      • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
      • CF:3D City Model(小思维)问题解析和代码实现
        本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
      • 高质量SQL书写的30条建议
        本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
      • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
        本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
      • 如何搭建Java开发环境并开发WinCE项目
        本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
      author-avatar
      手机用户2602920263
      这个家伙很懒,什么也没留下!
      PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
      Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有