前言

Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作,混合开发中用来存储大量数据也非常高效和方便(Web SQL操作指南 摸我)。

复盘

项目需求一次要导入大量数据到应用程序中,数据的插入过程也很简单,如果插入数据量少于500条跑起来是能够正常运行的,但超过500条时部分手机就会出错(部分手机一次插入超过500条虽然也能运行,但效率不高),代码片段如下:

let sql = 'insert into U_TABLE_NAME( '+ 'per_id,org_id'+ ' ) values ';
let val = ''
data.forEach(element => {val += "("+ "'" + (element.per_id?element.per_id:"") + "'" + ","+ "'" + (element.org_id?element.org_id:"") + "'"+ "),"
});
sql = sql + val.substr(0,val.length-1)this.db.transaction(tx => {tx.executeSql(sql,[],(tx,result) => {      success()},(tx,err) => {this.$loading.close()console.log('U_TABLE_NAME:' + err.message);this.$toast('数据导入异常')})
})

异常日志如下见:


D/SystemWebChromeClient: file:///android_asset/www/static/js/1.cdd1f9cf85ab9df9c70c.js: Line 1 : U_TABLE_NAME:could not prepare statement (1 too many terms in compound SELECT)
I/chromium: [INFO:CONSOLE(1)] "U_TABLE_NAME:could not prepare statement (1 too many terms in compound SELECT)", source: file:///android_asset/www/static/js/1.cdd1f9cf85ab9df9c70c.js (1)

解决方案

分批次进行插入即可:

for(var i=0;i<data.length;i+=400){let sql = 'insert into U_TABLE_NAME( '+ 'per_id,org_id'+ ' ) values ';let val = ''data.slice(i,i+400).forEach(element => {val += "("+ "'" + (element.per_id?element.per_id:"") + "'" + ","+ "'" + (element.org_id?element.org_id:"") + "'"+ "),"});sql = sql + val.substr(0,val.length-1)this.db.transaction(tx => {tx.executeSql(sql,[],(tx,result) => {      success()},(tx,err) => {this.$loading.close()console.log('U_TABLE_NAME:' + err.message);this.$toast('数据导入异常')})})
}

WebSQL 插入数据有上限相关推荐

  1. redis php数据插入失败,redis插入数据,恢复数据测试(禁止淘汰策略下恢复大于redis内存限制数据情况)...

    环境准备: redis php的redis扩展 redis version=4.0.8 php version: php version.png php redis extension: php re ...

  2. MySQL 批量插入数据,单次插入多少条数据效率最高

    文章目录 一.前言 二.批量插入前准备 1.插入到数据表的字段 2.计算一行字段占用的空间 3.在数据里做插入操作的时候,整体时间的分配 三.批量插入数据测试 1.SQL语句的大小限制 2.查看服务器 ...

  3. MySQL 批量插入数据,一次插入多少行数据效率最高?

    一.前言 我们在操作大型数据表或者日志文件的时候经常会需要写入数据到数据库,那么最合适的方案就是数据库的批量插入.只是我们在执行批量操作的时候,一次插入多少数据才合适呢?假如需要插入的数据有百万条,那 ...

  4. MySQL 学习笔记(4)— 组合查询、子查询、插入数据、更新/删除表数据、增加/删除表中的列以及重命名表

    1. 组合查询 1.表的加减法 表的加法,即求 product 和 product2 的并集,UNION 运算会除去重复的记录 SELECT product_id, product_name FROM ...

  5. 用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  6. bd2和mysql语法区别,经验:在MySQL数据库中,这4种方式可以避免重复的插入数据!...

    最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下 ...

  7. jsp 插入mysql乱码_JSP MySQL插入数据时出现中文乱码问题的解决方法

    当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...

  8. MySQL如何快速插入数据

    前言: 日常学习和工作中,经常会遇到导数据的需求.比如数据迁移.数据恢复.新建从库等,这些操作可能都会涉及大量数据的导入 有时候导入进度慢,电脑风扇狂转真的很让人崩溃,其实有些小技巧是可以让导入更快速 ...

  9. 吴裕雄 10-MySQL插入数据

    语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ...

最新文章

  1. 访问系统相册或调用摄像头
  2. Hessian Web Service C# 示例
  3. java解析nes_【JVM系列】一步步解析java执行内幕
  4. mysql的驱动connect放在哪里_Python连接数据库两种方法,QSqlDatabase,pymmsql,驱动名...
  5. PHP json_encode 只支持utf8编码
  6. .NET Core 中如何调试 死锁 ?
  7. spring 异常捕获异常_跟踪异常–第5部分–使用Spring进行计划
  8. 实时数仓Hologres首次走进阿里淘特双11
  9. 容器编排技术 -- Kubernetes 给容器和Pod分配内存资源
  10. 算法--帕斯卡三角(杨辉三角)JS写法
  11. 数据结构上机实践第五周项目3 - 括号的匹配
  12. Welcome To SWPUNC-ACM
  13. 教学软件哪个好用,推荐这四个
  14. MySQL下载步骤详解
  15. 安全合规/等级保护--13--我们通过了等级保护三级认证
  16. excel职称计算机考试题怎么做,职称计算机考试EXCEL试题「附答案」
  17. 数字华容道的数学原理
  18. 从 Google 离职了!
  19. linux服务器怎么刻录光盘,Ubuntu 下使用K3B软件刻录光盘(图)
  20. 12306订票候补是个坑_重磅!12306候补购票正式上线,实测你可能连排队的机会都没有!...

热门文章

  1. 目标检测开源代码汇总 object detection algorithm codes (转)
  2. Android微信分享学习笔记
  3. C#和C++ 库的相互引用
  4. 大佬们:小爱音响添加点灯科技里的灯,语音控制时提示“要操作的设备好像出问题了,等一会再试”这个怎么处理?
  5. 更好用的看家工具,智能侦测异常情况,QCY智能摄像机CC1A上手
  6. UE4在windows下打包IOS(虚拟机)
  7. JAVA程序员必须掌握的数据结构的面试题(附答案)
  8. java语言程序设计精编_全国精编月高等教育自学考试Java语言程序设计一试题
  9. python进行聚类分析:鸢尾花(iris)代码
  10. jq动画效果(图片左右大小切换,轮播)