java addbatch_使用addBatch java时丢失数据
我使用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时丢失数据相关推荐
- java应用重启导致数据丢失_java – 在重新启动应用程序后从SharedPreferences恢复时设置丢失数据...
我在android上使用SharedPreference来存储一组字符串.根据我的知识存储和检索它,但是当重新启动应用程序时,一些数据会丢失.字符串是逐个添加的,在添加它之前我检索集合,添加字符串然后 ...
- Java 7:在不丢失数据的情况下关闭NIO.2文件通道
关闭异步文件通道可能非常困难. 如果您将I / O任务提交到异步通道,则需要确保正确执行了任务. 实际上,出于多种原因,这对于异步通道可能是一个棘手的要求. 默认的通道组使用守护进程线程作为工作线程, ...
- java bootstrapcache_使用ehcache持久化数据到磁盘 并且在应用服务器重启后不丢失数据...
标签: 使用ehcache时如何持久化数据到磁盘,并且在应用服务器重启后不丢失数据 1.如何持久化到磁盘 使用cache.flush(),每次写入到cache后调用cache.flush() ,这样e ...
- Java虚拟机2:Java 运行时数据区
前言快速到底 如果有人问你 java 的内存区域分为哪些,可能很多人会说:堆.栈.方法区--.我个人理解从开发者的角度 Java 能够涉及到"内存区域"的大致有两处:第一,java ...
- java map输出中括号,从地图检索数据时获取双方括号
我将数据存储在Map中,以字符串作为键,以JSONArray作为值的形式存储在Map中,但是在检索数据时,我得到了值的双方括号 这是我的程序 import java.util.Iterator; im ...
- Java内存区域(运行时数据区域)和内存模型(JMM)
原文作者:czwbig 原文:https://www.cnblogs.com/czwbig/p/11127124.html Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数 ...
- java虚拟机之一内存运行时数据区域解释
Java虚拟机管理的内存运行时数据区域解释 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启 ...
- Java内存管理:Java内存区域 JVM运行时数据区
Java内存管理:Java内存区域 JVM运行时数据区 在前面的一些文章了解到javac编译的大体过程.Class文件结构.以及JVM字节码指令. 下面我们详细了解Java内存区域:先说明JVM规范定 ...
- Java JVM内存模型(运行时数据区域)详解
详细介绍了JVM运行时数据区域,包括方法区.堆空间.栈空间.本地方法栈.程序计数器.常量池.直接内存.字面量.符号引用.直接引用. Java程序在运行时,需要在内存中的分配空间.为了提高运算效率,ja ...
最新文章
- 尝试优化骨骼动画计算的意外收获——使用嵌入式汇编对float转int进行优化
- Java加视频特效,实现伪原创
- 关于C#中将数字转换为指定格式
- Windows Nano Server安装配置详解03:远程管理Nano Server
- oracle 还原dmp时_报错的值太大,基于oracle数据库的CLOUD备份恢复测试
- 什么是一致性Hash算法?
- Go语言【第九篇】:Go数据结构之:数组
- oracle静默安装快吗,Oracle静默安装简要的注意事项
- 19.卷1(套接字联网API)---密钥管理套接字
- 实对称矩阵的特征值求法_线性代数之实对称矩阵得相似对角化问题的方法总结...
- Android开发之PreferenceActivity和PreferenceFragment
- openstack-packstack一键式在线部署
- 服务器装Win10虚拟机流畅,win10自带虚拟机和vmware哪个更流畅_win10自带虚拟机和vm哪个好用-win7之家...
- 深入理解凸优化核心理论:对偶
- 原相机怎么设置水印_原来手机拍照也可以添加文字、水印、超实用,我怎么没有早点发现...
- 数据的准确性对模型效果的重要性
- 无法向虚拟机中拷贝文件解决办法
- 倍福 TwinCAT背景知识
- Python学习笔记字典之检查字典中是否存在键或值
- 计算机的kb代表着什么,计算机中KB与Kb的技术差别详解
热门文章
- linux系统之编译内核实现iptables应用层过滤
- (转)[Cocoa]深入浅出 Cocoa 之 Framework
- 无法启动windows安全中心服务
- C语言中指针与数组的区别,C语言 指针与数组的详解及区别
- 畅销书系列:《引爆点》、《异类》、《从0到1》
- pycharm的terminal无法识别到命令 pytest 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 资深面试官解答:大厂月薪过20K的测试工程师,都需要满足哪些要求?
- 转行经验分享,关于软件测试的感悟,你想知道的都在这里……
- 软件测试:面试屡屡碰壁,只因你身上少了这几个特征!
- linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区...