我使用executeBatch插入数据但是有些数据丢失了,在数据库中找不到,没有发现任何异常 .

DB:Oracle .

驱动程序版本:11.2.0.4.0

池:UCP:Oracle通用连接池

请帮忙 .

这是我的代码:

protected static void insertExtraData(String serviceCode, JsonObject extras, PaymentRequest request) {

PreparedStatement ps = null;

long tid = request.getTransId();

long coreId = request.getCoreTransId();

Connection con = null;

try {

con = ConnectionFactory.getConnection();

con.setAutoCommit(false);

ps = con.prepareStatement("INSERT INTO REPORT_ADMIN.SHOPPING_TRANS_DATA VALUES(?,?,?)");

MultiLog.write(serviceCode, tid, coreId, "INSERT INTO REPORT_ADMIN.SHOPPING_TRANS_DATA VALUES(?,?,?)");

Set fieldNames = extras.getFieldNames();

for (String fieldName : fieldNames) {

MultiLog.write(serviceCode, tid, coreId, "para 01: " + tid);

MultiLog.write(serviceCode, tid, coreId, "para 02: " + fieldName);

MultiLog.write(serviceCode, tid, coreId, "para 03: " + extras.getString(fieldName));

ps.setString(1, String.valueOf(tid));

ps.setString(2, Utils.nullToEmpty(fieldName));

ps.setString(3, Utils.nullToEmpty(extras.getString(fieldName)));

MultiLog.write(serviceCode, tid, coreId, "add Batch");

ps.addBatch();

}

ps.executeBatch();

con.commit();

}

catch (Exception e) {

MultiLog.error(serviceCode, tid, "ERROR", e);

}

finally {

Utils.close(ps);

Utils.close(con);

}

}

这是我的日志:

[[1460430555111][698905167]]---INSERT INTO REPORT_ADMIN.SHOPPING_TRANS_DATA VALUES(?,?,?)

[[1460430555111][698905167]]---para 01: 1460430555111

[[1460430555111][698905167]]---para 02: TransId_Ref

[[1460430555111][698905167]]---para 03: 1460430539304

[[1460430555111][698905167]]---add Batch

[[1460430555111][698905167]]---para 01: 1460430555111

[[1460430555111][698905167]]---para 02: ContractNo

[[1460430555111][698905167]]---para 03: 207-0003

[[1460430555111][698905167]]---add Batch

[[1460430555111][698905167]]---para 01: 1460430555111

[[1460430555111][698905167]]---para 02: IdCardNumber

[[1460430555111][698905167]]---para 03: ***9272

[[1460430555111][698905167]]---add Batch

[[1460430555111][698905167]]---para 01: 1460430555111

[[1460430555111][698905167]]---para 02: CustomerName

[[1460430555111][698905167]]---para 03: pa

[[1460430555111][698905167]]---add Batch

[[1460430555111][698905167]]---para 01: 1460430555111

[[1460430555111][698905167]]---para 02: CompanyName

[[1460430555111][698905167]]---para 03: FC

[[1460430555111][698905167]]---add Batch

[[1460430555111][698905167]]---para 01: 1460430555111

[[1460430555111][698905167]]---para 02: RefNo

[[1460430555111][698905167]]---para 03: MS1460430555111

[[1460430555111][698905167]]---add Batch

[[1460430555111][698905167]]---para 01: 1460430555111

[[1460430555111][698905167]]---para 02: IdentifyInfo

[[1460430555111][698905167]]---para 03: TE_at

[[1460430555111][698905167]]---add Batch

表格说明:

CREATE TABLE "REPORT_ADMIN"."SHOPPING_TRANS_DATA"

(

"TID" NUMBER NOT NULL ENABLE,

"KEY" VARCHAR2(50 BYTE),

"VALUE" VARCHAR2(500 BYTE),

) SEGMENT CREATION IMMEDIATE

PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1

BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

java addbatch_使用addBatch java时丢失数据相关推荐

  1. java应用重启导致数据丢失_java – 在重新启动应用程序后从SharedPreferences恢复时设置丢失数据...

    我在android上使用SharedPreference来存储一组字符串.根据我的知识存储和检索它,但是当重新启动应用程序时,一些数据会丢失.字符串是逐个添加的,在添加它之前我检索集合,添加字符串然后 ...

  2. Java 7:在不丢失数据的情况下关闭NIO.2文件通道

    关闭异步文件通道可能非常困难. 如果您将I / O任务提交到异步通道,则需要确保正确执行了任务. 实际上,出于多种原因,这对于异步通道可能是一个棘手的要求. 默认的通道组使用守护进程线程作为工作线程, ...

  3. java bootstrapcache_使用ehcache持久化数据到磁盘 并且在应用服务器重启后不丢失数据...

    标签: 使用ehcache时如何持久化数据到磁盘,并且在应用服务器重启后不丢失数据 1.如何持久化到磁盘 使用cache.flush(),每次写入到cache后调用cache.flush() ,这样e ...

  4. Java虚拟机2:Java 运行时数据区

    前言快速到底 如果有人问你 java 的内存区域分为哪些,可能很多人会说:堆.栈.方法区--.我个人理解从开发者的角度 Java 能够涉及到"内存区域"的大致有两处:第一,java ...

  5. java map输出中括号,从地图检索数据时获取双方括号

    我将数据存储在Map中,以字符串作为键,以JSONArray作为值的形式存储在Map中,但是在检索数据时,我得到了值的双方括号 这是我的程序 import java.util.Iterator; im ...

  6. Java内存区域(运行时数据区域)和内存模型(JMM)

    原文作者:czwbig 原文:https://www.cnblogs.com/czwbig/p/11127124.html Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数 ...

  7. java虚拟机之一内存运行时数据区域解释

    Java虚拟机管理的内存运行时数据区域解释 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启 ...

  8. Java内存管理:Java内存区域 JVM运行时数据区

    Java内存管理:Java内存区域 JVM运行时数据区 在前面的一些文章了解到javac编译的大体过程.Class文件结构.以及JVM字节码指令. 下面我们详细了解Java内存区域:先说明JVM规范定 ...

  9. Java JVM内存模型(运行时数据区域)详解

    详细介绍了JVM运行时数据区域,包括方法区.堆空间.栈空间.本地方法栈.程序计数器.常量池.直接内存.字面量.符号引用.直接引用. Java程序在运行时,需要在内存中的分配空间.为了提高运算效率,ja ...

最新文章

  1. 尝试优化骨骼动画计算的意外收获——使用嵌入式汇编对float转int进行优化
  2. Java加视频特效,实现伪原创
  3. 关于C#中将数字转换为指定格式
  4. Windows Nano Server安装配置详解03:远程管理Nano Server
  5. oracle 还原dmp时_报错的值太大,基于oracle数据库的CLOUD备份恢复测试
  6. 什么是一致性Hash算法?
  7. Go语言【第九篇】:Go数据结构之:数组
  8. oracle静默安装快吗,Oracle静默安装简要的注意事项
  9. 19.卷1(套接字联网API)---密钥管理套接字
  10. 实对称矩阵的特征值求法_线性代数之实对称矩阵得相似对角化问题的方法总结...
  11. Android开发之PreferenceActivity和PreferenceFragment
  12. openstack-packstack一键式在线部署
  13. 服务器装Win10虚拟机流畅,win10自带虚拟机和vmware哪个更流畅_win10自带虚拟机和vm哪个好用-win7之家...
  14. 深入理解凸优化核心理论:对偶
  15. 原相机怎么设置水印_原来手机拍照也可以添加文字、水印、超实用,我怎么没有早点发现...
  16. 数据的准确性对模型效果的重要性
  17. 无法向虚拟机中拷贝文件解决办法
  18. 倍福 TwinCAT背景知识
  19. Python学习笔记字典之检查字典中是否存在键或值
  20. 计算机的kb代表着什么,计算机中KB与Kb的技术差别详解

热门文章

  1. linux系统之编译内核实现iptables应用层过滤
  2. (转)[Cocoa]深入浅出 Cocoa 之 Framework
  3. 无法启动windows安全中心服务
  4. C语言中指针与数组的区别,C语言 指针与数组的详解及区别
  5. 畅销书系列:《引爆点》、《异类》、《从0到1》
  6. pycharm的terminal无法识别到命令 pytest 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  7. 资深面试官解答:大厂月薪过20K的测试工程师,都需要满足哪些要求?
  8. 转行经验分享,关于软件测试的感悟,你想知道的都在这里……
  9. 软件测试:面试屡屡碰壁,只因你身上少了这几个特征!
  10. linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区...