- 浏览: 551435 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 345Class Loader 类加载器: 类加载器负责加载 ... -
Stack 的实现原理深入剖析
2020-04-06 13:26 435Stack 介绍: Stack是栈。 ... -
Vector 的实现原理深入剖析
2020-04-06 13:17 327Vector介绍: Vector 是矢量队列,它是JDK1. ... -
JDK 分析工具
2020-04-05 17:30 297常用分析工具: jps:显示指定系统中所有的HotSpot虚 ... -
二叉树的深度优先遍历和广度优先遍历
2020-03-10 09:33 511概述: 1、深度优先遍历(Depth-First-Sear ... -
Hashtable 的实现原理深入剖析
2020-02-18 20:59 431一、Hashtable的基本方法: 1、定义: HashT ... -
jdk 1.8 新特性
2020-02-17 13:43 2911、default关键字 ... -
Java IO 架构
2019-11-11 16:39 315主要两类: 磁盘I/O 网络I/O 基于字节 ... -
Java 数据结构与算法
2019-04-03 10:25 456程序=数据结构+算法 ... -
Java语言异常(Exception)
2018-10-09 11:40 503异常,是Java中非常常用 ... -
Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
2018-08-17 09:47 1430首先介绍一些乐观锁与 ... -
Java 高性能编程注意事项
2016-11-17 09:55 6131. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担, ... -
Netty 解析
2017-03-07 13:47 1179Linux网络IO模型: Linux ... -
2016年Java 面试题总结
2016-01-18 13:34 54725多线程、并发及线程的基础问题: 1)Java 中能创建 vo ... -
java 内存模型
2015-12-29 13:44 778JAVA内存模型: Java内存 ... -
JVM 深入剖析
2015-12-29 12:51 1031JVM是JAVA虚拟机(JAVA Virtual Machin ... -
Java 并发编程_Synchronized
2015-12-16 12:42 829硬件的效率和一致性: 由于计算机的运算速度和它的存储和通讯子 ... -
Java 并发编程_Volatile
2015-12-15 13:42 589术语定义: 共享变量:在多个线程之间能够被共享的变量被称为共 ... -
Java 并发编程_ConcurrentLinkedQueue
2015-12-15 13:32 871ConcurrentLinkedQueue 的分析和使用: ... -
Java 并发编程_ConcurrentHashMap
2015-11-10 11:30 798ConcurrentHashMap 的分析和 ...
相关推荐
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
java对oracle数据库中blob字段的处理
基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案.pdf
C#访问oracle数据库类 1、执行非查询命令 2、执行查询命令 3、带blob字段读写
kettle通过java代码将数据库blob 字段抽取到本地文件
java中读取ORACLE中BLOB字段存储的图片
java中sqllite数据库blob数据类型的存取.docx
JAVA中SQLlite数据库BLOB数据类型的存取.docx
基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案
c#操作oracle数据库Blob源码,包括Update&Insert
主要介绍了java读写oracle的blob字段示例,需要的朋友可以参考下
vc6读取数据库blob大二制对像,在ACCESS,mssql2005,mssql2008下对blob的存取操作,希望对大家有所帮助
批量导出oracle bolb图片到本地文件
此文档是对于oracle数据库中blob类型字段二进制大对象的读取和解析
oracle查询blob字段照片(jpeg) 像素大小sql
java放blob到Oracle数据库 使用java把mp3等二进制文件放到Oracle数据库中
JDBC操纵Oracle数据库中的BLOB字段
使用JAVA读取ORACLE_BLOB字段实现上传下载.doc
很多朋友在操作oracle数据库的clob,blob字段时不知道怎么插入和使用,这里提供读写范例。