java读取blob,clob转换为字符串
直接上代码:
package com.it.test; import java.io.BufferedReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import oracle.sql.BLOB; public class Test { /***
* 读取oracleCLOB字段内容
*
* @param conn
* @return
*/
public static String readCLOB(Connection conn) {
String sql = "select 大字段1,大字段2 from 印章基本信息_char_ccbb where yzbm='2'";
String content = "";
try {
conn.setAutoCommit(false);
PreparedStatement ps1 = conn.prepareStatement(sql);
ResultSet rs1 = ps1.executeQuery();
while (rs1.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs1.getClob("大字段1"); BufferedReader in = new BufferedReader(clob.getCharacterStream());
StringWriter out = new StringWriter();
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
content = out.toString();
System.out.println(content);// 输出CLOB内容
}
} catch (Exception e) {
e.printStackTrace();
}
return content;
} /***
* 读取oracle的blob转换为字符串
*
* @param conn
* @return
*/
public static String ConvertBLOBtoString(Connection conn) {
String newStr = ""; // 返回字符串
long BlobLength; // BLOB字段长度
byte[] bytes; // BLOB临时存储字节数组
int i = 1; // 循环变量
Statement st = null;
try {
st = conn.createStatement();
ResultSet rs = st.executeQuery("select 大字段2 from 印章基本信息_char_ccbb where yzbm='2'");
while (rs.next()) {
BLOB blob = (BLOB) rs.getBlob("大字段2");
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, "gb2312");
}
}
}
System.out.println(newStr);
System.out.println(newStr.length()); } catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return newStr;
}
}
以上内容参考自:https://blog.csdn.net/u010965170/article/details/78729794
java读取blob,clob转换为字符串的更多相关文章
- java读取blob全身乱码
一.BLOB操作 .入库 ()JDBC方式 //通过JDBC获得数据库连接 Class.forName("oracle.jdbc.driver.OracleDriver"); Co ...
- java 读取文件转换成字符串
public String readFromFile(File src) { try { BufferedReader bufferedReader = new BufferedReader(new ...
- java操作oracle的blob,clob数据
一.区别和定义 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列 LONG RAW: 可变长二进制数据,最长2G CLOB: ...
- Java中XML格式的字符串4读取方式的简单比较
Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...
- Java 读取文件到字符串
Java的io操作比较复杂 package cn.outofmemory.util; import java.io.BufferedReader; import java.io.FileInputSt ...
- Blob与Clob转字符串
/** * blob转字符串 * * @param blob * @return * @throws IOException * @throws SQLException */ public stat ...
- Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)
转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...
- java 读取clob
java 读取clob CreationTime--2018年7月1日09点41分 Author:Marydon 1.说明 jdbc 数据类型为Clob,与java的String类型相对应. 2. ...
- Java List转换为字符串的几种方法
Java List转换为字符串的几种方法 import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import ...
随机推荐
- vs调试时,不显示局部变量
为了测试一个函数的返回值,就在某个函数里加了一个局部变量,调试却不显示所添加变量的信息. 你一定设置成了release 模式.改为debug就可以了. 比较弱智的问题,mark一下.
- [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)]
[易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)] 项目实战 实战2:命令行工具minigrep 我们继续开发我们的minigrep. 我们现 ...
- Vue双向绑定的实现原理系列(四):补充指令解析器compile
补充指令解析器compile github源码 补充下HTML节点类型的知识: 元素节点 Node.ELEMENT_NODE(1) 属性节点 Node.ATTRIBUTE_NODE(2) 文本节点 N ...
- BZOJ 3173: [Tjoi2013]最长上升子序列 (线段树+BIT)
先用线段树预处理出每个数最终的位置.然后用BIT维护最长上升子序列就行了. 用线段树O(nlogn)O(nlogn)O(nlogn)预处理就直接倒着做,每次删去对应位置的数.具体看代码 CODE #i ...
- springboot中spring.profiles.include的妙用
我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测试.生产等.其中每个环境的数据库地址.服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改 ...
- 伪元素::before和::after的详细介绍
㈠什么是伪元素? 不同的解释: ⑴伪元素是创造关于文档语言能够指定的文档树之外的抽象.例如文档语言不能提供访问元素内容第一字或者第一行的机制.伪元素允许设计师引用它们,否则这是难以办到的.伪元素还提供 ...
- EntityManager的基本方法
1.Persistence 主要用来获取EntityManagerFactory的实例; 通过静态方法:createEntityManagerFactory 来实现: 该方法有两个重载版本: ...
- java多线程批量下载文件
多线程下载文件 平时开发中有时会用到文件下载,为了提高文件的下载速率,采用多线程下载能够达到事半功倍的效果: package test; /** * 文件下载类 * @author luweichen ...
- Confluence 6 编辑一个附加文件的属性
你需要具有空间的 添加附件(Add Attachment)权限来编辑文件的属性. 希望编辑一个附加文件的属性: Go to > Attachments 单击你希望编辑附件边上的 属性(Prop ...
- TTTTTTTTTTTTTT CF 95 B 构造4,7幸运数字 贪心 构造 string
B. Lucky Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...