`
eaglyang
  • 浏览: 23684 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

自己做的用JAVA往ORACLE新增和更新流数据

阅读更多
新增流数据:
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快速插入千万级数据

    java快速插入千万级数据,亲测91秒插入1700万数据!!!

    JAVA Oracle10G使用ppt

    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

    4天oracle快速入门_Java进阶数据库视频教程

    手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。...(7)能够使用JDBC连接Oracle数据库并完成数据的新增、修改、删除操作 (8)能够完成Oracle数据库的备份和还原操作

    实例讲解Java批量插入、更新数据

    片文章介绍了一个Java批量添加数据,多个字段同时添加多条数据具体实例,面向的是Oracle数据库,需要的朋友可以参考下

    Oracle11gPLSQLProgramming

    本书内容丰富,结构合理,全面涵盖Oracle Database 11g 的新增特性和实用工具,并提供详细的说明、可剪切-粘贴的语法示例和真实的案例分析。通过学习书中的代码和图例,您不仅能访问和修改数据库信息,编写功能强大...

    JAVA-JDBC连接数据库(查询_添加_修改_删除)

    JAVA-JDBC连接数据库(查询_添加_修改_删除)

    Oracle Database 11g完全参考手册中文版.part1

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    在同一数据库中将一个表中文件备份到另一个表

    通过java编程 实现oracle在同一数据库中将一个表中文件备份到另一个表 非常适合初学者

    Oracle.Database.11g.PL_SQL.Programming

    本书内容丰富,结构合理,全面涵盖Oracle Database 11g 的新增特性和实用工具,并提供详细的说明、可剪切-粘贴的语法示例和真实的案例分析。通过学习书中的代码和图例,您不仅能访问和修改数据库信息,编写功能强大...

    Oracle Database 11g完全参考手册中文版.part2

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle_Database_11g完全参考手册.part3/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    学生信息管理系统(实现增删改查操作)Java+Servlet+HTML+CSS+数据库

    Java+Servlet+HTML+CSS+数据库,实现的学生信息管理系统,实现了 新增和查询功能。 覆盖知识 java部分:程序基本概念、数据类型、流程控制、顺序、选择 、循环、跳转语句、变量、类、方法、实用类、JDBC、三层架构...

    代码自动生成工具(vb类 java类 sql存储过程...)

    模板编辑和代码查看支持语法高亮 (Java, VB, T-SQL) 可以新增语法文件,文件格式类似于 EditPlus 软件附带模板包括: VB 三层结构中实体和实体操作类 Java MVC 模式下Bean和 Action类 MSSQL 表操作...

    Oracle_Database_11g完全参考手册.part2/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。  DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色...

    Oracle 11g,面向管理员的新增功能

    并行操作、数据仓库优化,多媒体支持,内置消息,支持分区,内置Java虚拟机,虚拟专用数据库,闪回查询,支持集群和MPP,支持分布式SQL和事务处理,平台可移植性,自主管理数据库,安全企业搜索等等;

    java基于JDBC连接Oracle 11g Release2实例分析

    主要介绍了java基于JDBC连接Oracle 11g Release2的方法,实例分析了JDBC连接Oracle 11g Release2容易出现的异常与解决方法,需要的朋友可以参考下

    在 Ubuntu Linux 上安装 Oracle Java 14的方法

    最近,Oracle 宣布 Java 14(或 Oracle JDK 14)公开可用。如果你想进行最新的实验或者开发的话,...此外,最新的 Java 版本增加了 Java 语言对 switch 表达式的支持,新增了用于持续监控 JDK Flight Recorder 数据的

Global site tag (gtag.js) - Google Analytics