- 浏览: 567927 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- 随笔 (4)
- Spring (13)
- Java (61)
- HTTP (3)
- Windows (1)
- CI(Continuous Integration) (3)
- Dozer (1)
- Apache (11)
- DB (7)
- Architecture (41)
- Design Patterns (11)
- Test (5)
- Agile (1)
- ORM (3)
- PMP (2)
- ESB (2)
- Maven (5)
- IDE (1)
- Camel (1)
- Webservice (3)
- MySQL (6)
- CentOS (14)
- Linux (19)
- BI (3)
- RPC (2)
- Cluster (9)
- NoSQL (7)
- Oracle (25)
- Loadbalance (7)
- Web (5)
- tomcat (1)
- freemarker (1)
- 制造 (0)
最新评论
-
panamera:
如果设置了连接需要密码,Dynamic Broker-Clus ...
ActiveMQ 集群配置 -
panamera:
请问你的最后一种模式Broker-C节点是不是应该也要修改持久 ...
ActiveMQ 集群配置 -
maosheng:
longshao_feng 写道楼主使用 文件共享 模式的ma ...
ActiveMQ 集群配置 -
longshao_feng:
楼主使用 文件共享 模式的master-slave,produ ...
ActiveMQ 集群配置 -
tanglanwen:
感触很深,必定谨记!
少走弯路的十条忠告
Java写音频文件到Oracle数据库:
public boolean SaveVoiceFileToDb(String filename,String information_number,long sequece_number) {
boolean returnflag=false;
File file = new File(filename);
String insertSQL = "insert into t_vedio(serial_number,information_number,vedio_information) values(?,?,empty_blob())";
String updateSQL = "select vedio_information from t_vedio where information_number=? for update";
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
BasicDataSource datasource=(BasicDataSource)bf.getBean("datasource");
Connection con=null;
PreparedStatement ps = null;
ResultSet rs = null;
FileInputStream in = null;
System.out.println("read file " + filename + " length=" + file.length());
try {
if (file.length() > 0) {
Class.forName(datasource.getDriverClassName());
con = DriverManager.getConnection(datasource.getUrl(),datasource.getUsername(),datasource.getPassword());
con.setAutoCommit(false);
ps = con.prepareStatement(insertSQL);
ps.setLong(1, sequece_number);
ps.setString(2, information_number);
// 插入一个空对象empty_blob()
ps.execute();
// 锁定数据行进行更新,注意“for update”语句
System.out.println(updateSQL);
ps=con.prepareStatement(updateSQL);
ps.setString(1, information_number);
rs = ps.executeQuery();
while (rs.next()) {
// 得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("vedio_information");
OutputStream outStream = blob.getBinaryOutputStream();
// data是传入的byte数组,定义:byte[] data
if (!file.exists() || file.isDirectory())
{ throw new FileNotFoundException();
}
FileInputStream fis = new FileInputStream(file);
byte[] buf = new byte[1024];
int len=0;
while ((len=fis.read(buf)) != -1) {
outStream.write(buf, 0, len);
outStream.flush();
buf = new byte[1024];// 重新生成,避免和上次读取的数据重复
}
outStream.close();
}
con.commit();
rs.close();
} else {
System.out.println("read file " + filename + " error");
}
returnflag=true;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null)
try { in.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
if (ps != null) ps.close();
if (con != null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return returnflag;
}
Java读音频文件从Oracle数据库:
public byte[] getVedioInfoByte(String information_number) {
byte[] buffer = null;
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = C3P0Helper.createInstance().getConnection();
String sql = "select v.vedio_information from t_vedio v where v.information_number=?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, information_number);
stmt.execute();
rs = stmt.getResultSet();
// String filepath = "F:\\test_result.mp3";
// System.out.println("输出文件路径为:" + filepath);
while (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);
if (blob != null && !blob.isEmptyLob()) {
InputStream in = blob.getBinaryStream(); // 建立输出流
// FileOutputStream file = new FileOutputStream(filepath);
int len = (int) blob.length();
buffer = new byte[len]; // 建立缓冲区
while ( (len = in.read(buffer)) != -1) {
// file.write(buffer, 0, len);
break;
}
// file.close();
in.close();
System.out.println(terminal_no + "'s vedio information size:"+len);
}
}
} catch (SQLException ex2) {
ex2.printStackTrace();
} catch (Exception ex2) {
ex2.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex1) {
}
}
return buffer;
}
public boolean SaveVoiceFileToDb(String filename,String information_number,long sequece_number) {
boolean returnflag=false;
File file = new File(filename);
String insertSQL = "insert into t_vedio(serial_number,information_number,vedio_information) values(?,?,empty_blob())";
String updateSQL = "select vedio_information from t_vedio where information_number=? for update";
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
BasicDataSource datasource=(BasicDataSource)bf.getBean("datasource");
Connection con=null;
PreparedStatement ps = null;
ResultSet rs = null;
FileInputStream in = null;
System.out.println("read file " + filename + " length=" + file.length());
try {
if (file.length() > 0) {
Class.forName(datasource.getDriverClassName());
con = DriverManager.getConnection(datasource.getUrl(),datasource.getUsername(),datasource.getPassword());
con.setAutoCommit(false);
ps = con.prepareStatement(insertSQL);
ps.setLong(1, sequece_number);
ps.setString(2, information_number);
// 插入一个空对象empty_blob()
ps.execute();
// 锁定数据行进行更新,注意“for update”语句
System.out.println(updateSQL);
ps=con.prepareStatement(updateSQL);
ps.setString(1, information_number);
rs = ps.executeQuery();
while (rs.next()) {
// 得到java.sql.Blob对象后强制转换为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("vedio_information");
OutputStream outStream = blob.getBinaryOutputStream();
// data是传入的byte数组,定义:byte[] data
if (!file.exists() || file.isDirectory())
{ throw new FileNotFoundException();
}
FileInputStream fis = new FileInputStream(file);
byte[] buf = new byte[1024];
int len=0;
while ((len=fis.read(buf)) != -1) {
outStream.write(buf, 0, len);
outStream.flush();
buf = new byte[1024];// 重新生成,避免和上次读取的数据重复
}
outStream.close();
}
con.commit();
rs.close();
} else {
System.out.println("read file " + filename + " error");
}
returnflag=true;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null)
try { in.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
if (ps != null) ps.close();
if (con != null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return returnflag;
}
Java读音频文件从Oracle数据库:
public byte[] getVedioInfoByte(String information_number) {
byte[] buffer = null;
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = C3P0Helper.createInstance().getConnection();
String sql = "select v.vedio_information from t_vedio v where v.information_number=?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, information_number);
stmt.execute();
rs = stmt.getResultSet();
// String filepath = "F:\\test_result.mp3";
// System.out.println("输出文件路径为:" + filepath);
while (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);
if (blob != null && !blob.isEmptyLob()) {
InputStream in = blob.getBinaryStream(); // 建立输出流
// FileOutputStream file = new FileOutputStream(filepath);
int len = (int) blob.length();
buffer = new byte[len]; // 建立缓冲区
while ( (len = in.read(buffer)) != -1) {
// file.write(buffer, 0, len);
break;
}
// file.close();
in.close();
System.out.println(terminal_no + "'s vedio information size:"+len);
}
}
} catch (SQLException ex2) {
ex2.printStackTrace();
} catch (Exception ex2) {
ex2.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex1) {
}
}
return buffer;
}
发表评论
-
java 类的加载 以及 ClassLoader
2020-04-16 09:43 474Class Loader 类加载器: 类加载器负责加载 ... -
Stack 的实现原理深入剖析
2020-04-06 13:26 494Stack 介绍: Stack是栈。 ... -
Vector 的实现原理深入剖析
2020-04-06 13:17 370Vector介绍: Vector 是矢量队列,它是JDK1. ... -
JDK 分析工具
2020-04-05 17:30 387常用分析工具: jps:显示指定系统中所有的HotSpot虚 ... -
二叉树的深度优先遍历和广度优先遍历
2020-03-10 09:33 618概述: 1、深度优先遍历(Depth-First-Sear ... -
Hashtable 的实现原理深入剖析
2020-02-18 20:59 563一、Hashtable的基本方法: 1、定义: HashT ... -
jdk 1.8 新特性
2020-02-17 13:43 3831、default关键字 ... -
Java IO 架构
2019-11-11 16:39 354主要两类: 磁盘I/O 网络I/O 基于字节 ... -
Java 数据结构与算法
2019-04-03 10:25 526程序=数据结构+算法 ... -
Java语言异常(Exception)
2018-10-09 11:40 554异常,是Java中非常常用 ... -
Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
2018-08-17 09:47 1477首先介绍一些乐观锁与 ... -
Java 高性能编程注意事项
2016-11-17 09:55 6511. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担, ... -
Netty 解析
2017-03-07 13:47 1227Linux网络IO模型: Linux ... -
2016年Java 面试题总结
2016-01-18 13:34 54799多线程、并发及线程的基础问题: 1)Java 中能创建 vo ... -
java 内存模型
2015-12-29 13:44 821JAVA内存模型: Java内存 ... -
JVM 深入剖析
2015-12-29 12:51 1100JVM是JAVA虚拟机(JAVA Virtual Machin ... -
Java 并发编程_Synchronized
2015-12-16 12:42 874硬件的效率和一致性: 由于计算机的运算速度和它的存储和通讯子 ... -
Java 并发编程_Volatile
2015-12-15 13:42 622术语定义: 共享变量:在多个线程之间能够被共享的变量被称为共 ... -
Java 并发编程_ConcurrentLinkedQueue
2015-12-15 13:32 912ConcurrentLinkedQueue 的分析和使用: ... -
Java 并发编程_ConcurrentHashMap
2015-11-10 11:30 835ConcurrentHashMap 的分析和 ...
相关推荐
Oracle数据库在存储大对象(BLOB)数据时,提供了高效且灵活的方式,使得二进制数据如图片、文档等能够安全地保存在数据库中。批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将...
本文介绍了一种基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案,展示了JSP技术、ORACLE数据库BLOB字段、坐标点的存储和读取、图形的显示、排样数据表设计、Samplegraph.jsp的功能、JAVA类的应用等知识点。
【Java读写Oracle BLOB字段】在Java编程中,与Oracle数据库交互时,有时需要处理存储大对象(LOB)的数据,比如图片、音频或大型文本文件。BLOB类型用于存储二进制大对象,本文将详细介绍如何使用Java来读取和写入...
以上就是使用Java将图片写入数据库(使用Blob类型)并读出来的基本流程。在实际应用中,你可能需要处理异常、事务管理、性能优化等方面的问题。同时,为了提高效率,可以考虑将数据分块读写,特别是处理大文件时。...
Oracle数据库系统支持多种复杂的数据类型,其中包括BLOB(Binary Large Object),用于存储非结构化的大数据,如图片、音频或视频文件。而MySQL同样提供了BLOB类型,用于相似的用途。本篇将详细讲解如何在Oracle与...
Oracle数据库是广泛使用的数据库系统,它支持Blob类型的字段。Hibernate作为一款流行的ORM(对象关系映射)框架,提供了与Oracle数据库交互的简便方式,包括处理Blob数据。本文将详细介绍如何使用Hibernate和JDBC...
本文将深入探讨Java与Oracle数据库在处理大字段,如BLOB类型数据时的交互方法。Oracle数据库是业界广泛使用的数据库管理系统,而Java作为多平台支持的编程语言,常用于开发与数据库交互的应用程序。在这个主题中,...
在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...
Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...
本篇文章将深入探讨如何在 Oracle 数据库与基于 WebLogic 的应用中读写 BLOB 数据。 首先,Oracle 数据库提供了多种操作 BLOB 值的方法。在 SQL 查询中,你可以使用 `SELECT BLOB_COLUMN FROM TABLE` 来读取 BLOB ...
以下是如何使用Java读写Oracle数据库中CLOB和BLOB字段的基本步骤: 1. **建立数据库连接**:使用`java.sql.DriverManager.getConnection()`方法,提供数据库URL、用户名和密码来创建`Connection`对象。 2. **创建...
介绍了JSP处理图形的一种方法,该方法使用JSP访问ORACLE数据库BLOB字段,BLOB字段存储的是排样后的若干图形的坐标点,然后把坐标传递到JAVA中显示图形,在图形正中还显示了编号,充分显示了JSP结合JAVA应用的优势。
Oracle 数据库 10g 中的 Web 服务可以使用标准的或第三方的 Java 库扩展数据库功能,实现对 PL/SQL 类型(CLOB、BLOB)的 Web 服务支持。 6. 快速连接故障切换 Oracle 数据库 10g 中的 Web 服务可以实现快速连接...
这里我们主要探讨两种Java从数据库中读取Blob对象图片并显示的方法。 **方法一** 这个方法涉及从数据库获取Blob对象的输入流,并将其直接写入HTTP响应的输出流,以便浏览器可以解析并显示图片。以下是实现步骤: ...
Oracle数据库支持Blob类型,允许用户在数据库中直接存储和管理这些大型文件。本文将详细介绍如何在Oracle数据库中实现Blob字段的上传和下载操作。 #### 二、Blob字段上传 Blob字段的上传通常涉及到以下几个步骤: ...
总之,更新Oracle数据库中的Blob字段需要对Java的JDBC API有深入理解,特别是Blob对象的处理。`TestBlob.java`可能是解决特定Blob更新问题的一个实例,通过阅读和分析这个文件,我们可以学习如何在实际项目中有效地...
Oracle数据库连接包通常指的是JDBC(Java Database Connectivity)驱动,它是Oracle公司为Java开发的接口,使得Java应用程序能够与Oracle数据库进行通信。JDBC驱动分为四种类型:Type 1、Type 2、Type 3和Type 4,...
可以使用`oracle.sql.BLOB`(Oracle数据库)或`com.microsoft.sqlserver.jdbc.SQLServerBlob`(SQL Server)等特定数据库实现。 三、将Byte存入Blob的步骤 1. 读取二进制数据:通常,二进制数据可以来源于文件,...