热门标签 | 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  


      推荐阅读
      • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
        在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
      • 解决Bootstrap DataTable Ajax请求重复问题
        在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
      • 包含phppdoerrorcode的词条 ... [详细]
      • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
      • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
        近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
      • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
        在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
      • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
      • 在尝试对从复杂 XSD 生成的类进行序列化时,遇到了 `NullReferenceException` 错误。尽管已经花费了数小时进行调试和搜索相关资料,但仍然无法找到问题的根源。希望社区能够提供一些指导和建议,帮助解决这一难题。 ... [详细]
      • 深入解析Gradle中的Project核心组件
        在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
      • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
      • 从0到1搭建大数据平台
        从0到1搭建大数据平台 ... [详细]
      • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
      • 为了评估精心优化的模型与策略在实际环境中的表现,Google对其实验框架进行了全面升级,旨在实现更高效、更精准和更快速的在线测试。新的框架支持更多的实验场景,提供更好的数据洞察,并显著缩短了实验周期,从而加速产品迭代和优化过程。 ... [详细]
      • 在Ubuntu 13.04系统中,如果希望移除OpenJDK以优化Java环境配置,但尝试卸载`openjdk-7-jre`时遇到了问题。具体命令 `$ sudo apt-get purge openjdk-7-jre` 会显示如下提示信息: ... [详细]
      • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
      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社区 版权所有