新增流数据:
public void addStreamData(String fin, String fout, int logId) throws PMSException{
String SQL_ADD = " INSERT INTO MIS_STREAMDATA(STREAMDATA_ID, MAIN_CONTENT, LOG_ID, STREAM_IN, STREAM_OUT) "
+ " VALUES(?, ?, ?, empty_blob(), empty_blob()) ";
String SQL_UPDATE = " SELECT t.STREAM_IN,t.STREAM_OUT FROM MIS_STREAMDATA t WHERE t.STREAMDATA_ID = ? FOR UPDATE ";
ConnUtil connUtil = ConnUtil.getInstance();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
int id = InfIDFactory.createId();
try {
//1、新增一条记录,不保存流数据
conn = connUtil.getConnection();
conn.setAutoCommit(false);特别注意不要漏掉这个语句,否则会出错!
ps = conn.prepareStatement(SQL_ADD);
ps.setInt(1, id);
ps.setString(2, "");//先让主要内容为空
ps.setInt(3, logId);
ps.execute();
ps.close();
conn.commit();//提交
connUtil.closeConn(conn, ps, rs);//关闭连接
//2、把流数据更新进数据库中
conn = connUtil.getConnection();
conn.setAutoCommit(false); ps = conn.prepareStatement(SQL_UPDATE);
ps.setInt(1, id);
rs = ps.executeQuery();
if(rs!= null && rs.next()){
/*
* 1、处理输入MIS流BLOB对象
*/
if(fin != null && !fin.equals("")){
BLOB blobIn = ((OracleResultSet)rs).getBLOB("STREAM_IN"); // 得到输入MIS流BLOB对象
OutputStream out = blobIn.getBinaryOutputStream(); // 建立输出流
System.out.println("返回的数据如下in:");
System.out.println(fin);
int len = fin.getBytes().length;
out.write(fin.getBytes(), 0, len);
out.close();
}
/*
* 2、处理MIS输出流BLOB对象
*/
if(fout != null && !fout.equals("")){
BLOB blobOut = ((OracleResultSet)rs).getBLOB("STREAM_OUT"); // 得到输入MIS流BLOB对象
OutputStream out = blobOut.getBinaryOutputStream(); // 建立输出流
System.out.println("返回的数据如下out:");
System.out.println(fout);
int len = fout.getBytes().length;
out.write(fout.getBytes(), 0, len);
out.close();
}
}
conn.commit();
} catch(Exception ex){
try{
conn.rollback();
deleteByStreamDataId(id, conn);
} catch(SQLException sqle){
String message = "更新接口服务器数据库异常!";
throw new PMSException(message, sqle);
}
String message = "更新接口服务器数据库异常!";
throw new PMSException(message, ex);
} finally {
connUtil.closeConn(conn, ps, rs);
}
}
修改流数据:
public void updateStreamData(String fin, String fout, int streamDataId) throws PMSException{
String SQL_UPDATE = " SELECT t.STREAM_IN,t.STREAM_OUT FROM MIS_STREAMDATA t WHERE t.STREAMDATA_ID = ? FOR UPDATE ";
ConnUtil connUtil = ConnUtil.getInstance();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
//1、把流数据更新进数据库中
conn = connUtil.getConnection();
conn.setAutoCommit(false); ps = conn.prepareStatement(SQL_UPDATE);
ps.setInt(1, streamDataId);
rs = ps.executeQuery();
if(rs!= null && rs.next()){
/*
* 1、处理输入MIS流BLOB对象
*/
if(fin != null && !fin.equals("")){
BLOB blobIn = ((OracleResultSet)rs).getBLOB("STREAM_IN"); // 得到输入MIS流BLOB对象
OutputStream out = blobIn.getBinaryOutputStream(); // 建立输出流
System.out.println("返回的数据如下in:");
System.out.println(fin);
int len = fin.getBytes().length;
out.write(fin.getBytes(), 0, len);
out.close();
}
/*
* 2、处理MIS输出流BLOB对象
*/
if(fout != null && !fout.equals("")){
BLOB blobOut = ((OracleResultSet)rs).getBLOB("STREAM_OUT"); // 得到输入MIS流BLOB对象
OutputStream out = blobOut.getBinaryOutputStream(); // 建立输出流
System.out.println("返回的数据如下out:");
System.out.println(fout);
int len = fout.getBytes().length;
out.write(fout.getBytes(), 0, len);
out.close();
}
}
conn.commit();
} catch(Exception ex){
try{
conn.rollback();
} catch(SQLException sqle){
String message = "更新接口服务器数据库异常!";
throw new PMSException(message, sqle);
}
String message = "更新接口服务器数据库异常!";
throw new PMSException(message, ex);
} finally {
connUtil.closeConn(conn, ps, rs);
}
}
分享到:
相关推荐
java快速插入千万级数据,亲测91秒插入1700万数据!!!
ppt共有19章:(2.8M) 第1章 概述.ppt 第2章 安装和创建数据库 .ppt 第3章 10g的新增功能.ppt 第4章 体系结构.ppt 第5章 SQLPlus基础.ppt 第6章 SQL基础.ppt 第7章 SQL高级查询技术.ppt ...第19章 Oracle的数据字典.ppt
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。...(7)能够使用JDBC连接Oracle数据库并完成数据的新增、修改、删除操作 (8)能够完成Oracle数据库的备份和还原操作
片文章介绍了一个Java批量添加数据,多个字段同时添加多条数据具体实例,面向的是Oracle数据库,需要的朋友可以参考下
本书内容丰富,结构合理,全面涵盖Oracle Database 11g 的新增特性和实用工具,并提供详细的说明、可剪切-粘贴的语法示例和真实的案例分析。通过学习书中的代码和图例,您不仅能访问和修改数据库信息,编写功能强大...
JAVA-JDBC连接数据库(查询_添加_修改_删除)
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
通过java编程 实现oracle在同一数据库中将一个表中文件备份到另一个表 非常适合初学者
本书内容丰富,结构合理,全面涵盖Oracle Database 11g 的新增特性和实用工具,并提供详细的说明、可剪切-粘贴的语法示例和真实的案例分析。通过学习书中的代码和图例,您不仅能访问和修改数据库信息,编写功能强大...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
Java+Servlet+HTML+CSS+数据库,实现的学生信息管理系统,实现了 新增和查询功能。 覆盖知识 java部分:程序基本概念、数据类型、流程控制、顺序、选择 、循环、跳转语句、变量、类、方法、实用类、JDBC、三层架构...
模板编辑和代码查看支持语法高亮 (Java, VB, T-SQL) 可以新增语法文件,文件格式类似于 EditPlus 软件附带模板包括: VB 三层结构中实体和实体操作类 Java MVC 模式下Bean和 Action类 MSSQL 表操作...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。 DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色...
并行操作、数据仓库优化,多媒体支持,内置消息,支持分区,内置Java虚拟机,虚拟专用数据库,闪回查询,支持集群和MPP,支持分布式SQL和事务处理,平台可移植性,自主管理数据库,安全企业搜索等等;
主要介绍了java基于JDBC连接Oracle 11g Release2的方法,实例分析了JDBC连接Oracle 11g Release2容易出现的异常与解决方法,需要的朋友可以参考下
最近,Oracle 宣布 Java 14(或 Oracle JDK 14)公开可用。如果你想进行最新的实验或者开发的话,...此外,最新的 Java 版本增加了 Java 语言对 switch 表达式的支持,新增了用于持续监控 JDK Flight Recorder 数据的