代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
读取/更新Oracle数据库blob字段
作者:
瑞祺
/ 发布于
2017/3/29
/
969
1. 读取BLOB字段 import oracle.sql.BLOB; ResultSet rs = ps.executeQuery(sql); BLOB blob = (BLOB) rs.getBlob("content"); String s = blobToString(blob); 2. blobToString()方法 private String blobToString(BLOB blob) throws SQLException, UnsupportedEncodingException { long BlobLength; // BLOB字段长度 int i = 1; // 循环变量 byte[] bytes; // BLOB临时存储字节数组 String newStr = ""; // 返回字符串 byte[] msgContent = blob.getBytes(); // BLOB转换为字节数组 BlobLength = blob.length(); //获取BLOB长度 if (msgContent == null || BlobLength == 0) //如果为空,返回空值 { return ""; } else { while (i <= BlobLength) //循环处理字符串转换,每次1024;Oracle字符串限制最大4k { bytes = blob.getBytes(i, 1024); i = i + 1024; newStr = newStr + new String(bytes); } } return newStr; } 3. update BLOB字段 public void insertData(String task_name, String tast_target) { int num = 0; String hql = "insert into table values(sequence_id.nextval,?,EMPTY_BLOB()) returning id into ?"; try { Connection conn = GlobalData.getConnection(); OraclePreparedStatement ops = (OraclePreparedStatement) conn.prepareStatement(hql); ops.setString(1, task_name); ops.registerReturnParameter(2, OracleTypes.NUMBER); num = ops.executeUpdate(); ResultSet rset = ops.getReturnResultSet(); // rest is not null long id = 0; while (rset.next()) { id = rset.getLong(1); System.out.println("Insert returnning: " + id); } //更新blob字段 Statement bst = conn.createStatement(); ResultSet bset = bst.executeQuery("select tast_target from table where id=" + id + " FOR UPDATE"); BLOB blob = null; while (bset.next()) { blob = ((OracleResultSet) bset).getBLOB(1); } final java.io.BufferedOutputStream out = new java.io.BufferedOutputStream(blob.getBinaryOutputStream());//输出流 ByteArrayInputStream streamTemp = null;//输入流 try { streamTemp = new ByteArrayInputStream(tast_target.getBytes("ISO-8859-1")); } catch (UnsupportedEncodingException ex) { Logger.getLogger(OracleGenelDaoImpl.class .getName()).log(Level.SEVERE, null, ex); } byte[] buffer = new byte[1024];//缓冲区 int length = -1; try { while ((length = streamTemp.read(buffer)) != -1) { out.write(buffer, 0, length); } streamTemp.close(); out.close(); } catch (IOException ex) { Logger.getLogger(OracleGenelDaoImpl.class .getName()).log(Level.SEVERE, null, ex); } conn.commit(); ops.close(); bst.close(); } catch (SQLException ex) { Logger.getLogger(OracleGenelDaoImpl.class .getName()).log(Level.SEVERE, null, ex); } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
瑞祺
贡献的其它代码
(
25
)
.
判断某个点是否在所画范围内(多边形/圆形)
.
1_1000之间的奇数之和
.
SqlServer存储过程中使用事务
.
设置Select按文本或按值选中
.
读取/更新Oracle数据库blob字段
.
取得MAC地址
.
自动登录网页,浏览页面
.
查看hive 表在hdfs上的存储路径
.
case when then else end 应用
.
金额元分之间转换工具类
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3