- 浏览: 1364414 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (287)
- oracle (30)
- Java (73)
- MySQL (16)
- Myeclipse/eclipse (12)
- javascript (15)
- JSP/Servlet (7)
- maven (14)
- AJAX (2)
- JQuery (9)
- tomcat (8)
- spring (21)
- Linux (28)
- PHP (9)
- UI (1)
- 编程错误及处理 (38)
- 多线程 (18)
- hibernate (10)
- Web Service (3)
- struts2 (6)
- log4j (3)
- SVN (4)
- DWR (1)
- lucene (1)
- 正则表达式 (4)
- jstl (2)
- SSL (3)
- POI (1)
- 网络编程 (1)
- 算法 (2)
- xml (4)
- 加密解密 (1)
- IO (7)
- jetty (2)
- 存储过程 (1)
- SQL Server (1)
- MongoDB (1)
- mybatis (1)
- ETL (1)
- Zookeeper (1)
- Hadoop (5)
- Redis (1)
- spring cloud (1)
最新评论
-
ron.luo:
牛逼,正解!
maven设定项目编码 -
lichaoqun:
java.sql.SQLException: Can't call commit when autocommit=true -
Xujian0000abcd:
Thanks...
Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the clas -
renyuan2ni:
[i][b][u]引用[list]
[*][img][flas ...
Manual close is not allowed over a Spring managed SqlSession -
851228082:
宋建勇 写道851228082 写道<!-- 文件拷贝时 ...
maven设定项目编码
package cn.com.songjy.test.db; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class OracleLob { private static final Log log = LogFactory.getLog(OracleLob.class); private static final String id = "3"; private static final BufferedInputStream bufferedInputStream = new BufferedInputStream( OracleLob.class.getClassLoader().getResourceAsStream( "cn/com/songjy/test/db/oracle.properties")); private static final Properties props = new Properties(); static { try { props.load(bufferedInputStream); Class.forName(props.getProperty("driver")); } catch (IOException e) { log.error(e.getMessage(), e); } catch (ClassNotFoundException e) { log.error(e.getMessage(), e); } finally { try { if (null != bufferedInputStream) bufferedInputStream.close(); } catch (IOException e) { log.error(e.getMessage(), e); } } } public Connection getConnection() throws SQLException { return DriverManager.getConnection(props.getProperty("url"), props.getProperty("user"), props.getProperty("password")); } /** * 保存图片到oracle库中 * * @throws SQLException * @throws IOException */ public void save_blob() throws SQLException, IOException { PreparedStatement preparedStatement = null; Connection connection = null; ResultSet resultSet = null; try { /* 先保存空blob */ connection = getConnection(); connection.setAutoCommit(false);// 必须设置为false,即开启事务! preparedStatement = connection .prepareStatement("INSERT INTO testblob(id,image) VALUES(?,?)"); preparedStatement.setString(1, id); // preparedStatement.setBlob(2, oracle.sql.BLOB.empty_lob());//empty_lob()已过期 preparedStatement.setBlob(2, oracle.sql.BLOB.getEmptyBLOB());// 先存一个空blob,此方法在驱动jar包中 // log.info(preparedStatement.executeUpdate() > 0 ? "保存空blob成功" : "保存空blob失败"); if (preparedStatement.executeUpdate() > 0) { log.info("保存空blob成功,方法继续!"); } else { log.info("保存空blob失败,方法返回!"); connection.rollback(); return; } /* 正式保存文件 */ preparedStatement = connection.prepareStatement("SELECT image FROM testblob WHERE id = ? FOR UPDATE");// 须加for update,锁定该行,直至该行被修改完毕,保证不产生并发冲突 preparedStatement.setString(1, id); resultSet = preparedStatement.executeQuery(); while (true == resultSet.next()) { BufferedInputStream bufferedInputStream = null; try { bufferedInputStream = new BufferedInputStream( new FileInputStream( "src/main/java/cn/com/songjy/test/db/Jellyfish.jpg"));// 需要保存的文件路径 Blob image = resultSet.getBlob("image"); byte[] buffer = new byte[1024];// 每次读取/写入1k for (int len = 0; (len = bufferedInputStream.read(buffer)) > 0;) { image.setBytes(image.length() + 1, buffer, 0, len);// Blob第一个字节(byte)的位置是从1开始,所以需要+1 } } finally { if (null != bufferedInputStream) bufferedInputStream.close(); } } connection.commit();// 开启了事物,必须手动提交 } finally { if (null != preparedStatement) preparedStatement.close(); if (null != connection) connection.close(); } } /** * 从oracle库中获取图片 * * @throws SQLException * @throws IOException */ public void query_blog() throws SQLException, IOException { PreparedStatement preparedStatement = null; Connection connection = null; ResultSet resultSet = null; try { connection = getConnection(); preparedStatement = connection .prepareStatement("SELECT image FROM testblob WHERE id = ?"); preparedStatement.setString(1, id); resultSet = preparedStatement.executeQuery(); while (true == resultSet.next()) { BufferedInputStream bufferedInputStream = null; BufferedOutputStream bufferedOutputStream = null; try { bufferedInputStream = new BufferedInputStream( resultSet.getBinaryStream("image")); bufferedOutputStream = new BufferedOutputStream( new FileOutputStream( "src/main/java/cn/com/songjy/test/db/1.jpg"));// 读取后的保存图片路径 byte[] buffer = new byte[1024]; for (int len = 0; (len = bufferedInputStream.read(buffer)) > 0;) { bufferedOutputStream.write(buffer, 0, len); // bufferedOutputStream.flush();//关闭流时会自动刷新 } } finally { if (null != bufferedOutputStream) bufferedOutputStream.close(); if (null != bufferedInputStream) bufferedInputStream.close(); } } } finally { if (null != resultSet) resultSet.close(); if (null != preparedStatement) preparedStatement.close(); if (null != connection) connection.close(); } } public static void main(String[] args) throws SQLException, IOException { // new OracleLob().save_blob(); new OracleLob().query_blog(); } } /* * 本次示例oracle版本是Oracle Database 11g Enterprise Edition Release * 11.2.0.1.0,上传的附件是oracle的驱动jar包 */
相关阅读:
MySQL存取大文本及二进制文件(图片)
- ojdbc5-11.2.0.jar (1.9 MB)
- 下载次数: 13
发表评论
-
ORA-12505, TNS:listener does not currently know of SID given in connect descript
2017-05-11 18:10 1324数据对接时需要连接对方的Oracle数据库,但程序在运行时出错 ... -
java.sql.SQLException: 违反协议: [12]
2014-12-04 13:40 9174表名:V_WJW_IPT_ADMISSIONNOT ... -
oracle收集
2014-08-28 14:04 692sql与oracle中有关case和decode的用法(行转列 ... -
Linux中启动Oracle
2014-07-28 11:33 790一、用oracle用户登录linux系统并执行命令:lsnrc ... -
表空间自动扩展设置
2014-07-19 21:28 1336报错信息: 解决步骤: 1、以管理员的权限登录后执行如下语句 ... -
servlet使用commons-fileupload上传文件示例
2014-01-03 14:32 843private static final Log log = ... -
Java调用ping命令
2013-11-26 10:26 3619package cn.com.songjy; impor ... -
MySQL存取大文本及二进制文件(图片)
2013-10-21 17:03 11797package cn.com.songjy.test.db; ... -
Iterate over rows and cells(EXCEL文件的读取)
2013-09-13 14:13 4052package cn.com.songjy.test.exce ... -
SQL优化之over的使用
2013-08-29 21:26 1196select t.grade, t.losal from sa ... -
Oracle中Union与Union All的区别
2013-01-31 11:16 1227http://weich-javadeveloper.itey ... -
PLSQL Developer保存用户和密码、执行当前SQL语句
2013-01-14 18:12 2131保存用户: Tools-->Preferences--& ... -
oracle 归档数据查询(分区查询)
2013-01-10 13:01 1472查询201212月份数据记录的SQL如下: SELECT CO ... -
oracle之SQL语句查询某个表所占物理空间大小
2013-01-09 13:38 1570select bytes B, bytes/1024 KB, ... -
利用Servlet使用数据流在jsp页面中显示硬盘中的图片
2012-12-21 09:57 4104ShowImageFromDiskServlet.java代码 ... -
Oracle同义词创建及其作用
2012-11-21 16:47 2235Oracle的同义词(synonyms ... -
Oracle解锁用户、新建用户、角色,授权,建表空间
2012-11-16 11:52 1030oracle数据库的权限系统分为系统权限与对象权限。 ... -
ORA-12514 : TNS:监听程序当前无法识别连接描述符中请求的服务
2012-11-05 14:13 1767一、找到监听文件,添加红色部分代码即可,如下: # list ... -
oracle对某个表增(改)字段的sql语句写法
2012-10-26 10:29 1253alter table TAB_SMS_BLACKLI ... -
安装oracle后电脑启动慢的解决办法
2012-10-08 16:55 1407一、进入注册表-services.msc 二、编辑txt文档 ...
相关推荐
Oracle,SQL2000,MYSQL存取图片或二进制数据的功能文件,请配合相关的驱动包使用。
Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件) Myeclipse6.0下开发 哈哈,原来2分的,现在免费了!!!!!!!!!!!!!!!!!!!!!!!!给评分哦!!!!!!!!!!!!!!!!
二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob...
│ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs │ │ a.txt │ │ Schema.ini │ │ │ └─其他 │ bcp-数据导入导出(全).sql │ bcp-数据导入导出-二进制文件.sql │ bcp-数据导出为文件.sql │ bcp表数据存为XML....
-格式化.sql │ 得到一个字符串在另一个字符串中出现的次数.sql │ 数字转换成十六进制.sql │ 比较第一与第二个字符串,是否有连续的5个字符相同.sql │ 生成查询的模糊匹配字符串.sql │ 简繁...
98 <br>0153 如何自定义数字小数点左边分组位数 98 <br>0154 格式化输入数据为货币格式 99 <br>0155 如何计算两个整数的乘积 99 <br>0156 如何将二进制数转换为十进制数 100 <br>0157 如何...
实例223 以二进制形式上传文件到数据库 285 实例224 上传文件到服务器 287 实例225 限制上传文件的大小 288 实例226 限制上传文件的类型 291 实例227 上传多个文件到服务器 292 4.2 文件下载 294 实例228 通过链接...
实例223 以二进制形式上传文件到数据库 285 实例224 上传文件到服务器 287 实例225 限制上传文件的大小 288 实例226 限制上传文件的类型 291 实例227 上传多个文件到服务器 292 4.2 文件下载 294 实例228 通过链接...
8、计算机指令定义 指令是对计算机进行程序控制的最小单元,是一种采用二进制表示的命令语言。一条指令 通常由两个部分组成,即操作码和操作数。 9、指令的执行过程。 10、什么是计算机软件 计算机软件是计算机系统中...
目录 第1章 JDBC概述 1.1 JDBC简介 1.2 JDBC3.0规范 1.3 JDBC3.0 API的新特点 1.3.1 JDBC 3.0 API的一致性 ...9.3.2 将数据库的图象二进制数据显示成图片 9.4 Java开发中的其他技术 9.5 本章小结
你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。 - 可扩展性 就像前面说的那样...
二进制是无法精确的表示 0.1 的。 进行高精度运算可以用java.math包中BigDecimal类中的方法。 自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时...