public class LobUtil {
private static final int BUFFER_SIZE = 4096;
private LobUtil() {
}
public static synchronized void writeBLOB(ResultSet rs, String fieldName,
byte[] buf) throws SQLException, IOException {
if (buf == null) {
return;
}
OutputStream os = null;
Blob b = rs.getBlob(fieldName);
if (b == null) {
throw new SQLException("刚刚插入或更新的BLOB指针为空!");
} else {
// if (Conn.isUseConnectionPool()){
// os =
// ((weblogic.jdbc.vendor.oracle.OracleThinBlob)b).getBinaryOutputStream();
// }
// else{
// os = ((oracle.sql.BLOB)b).getBinaryOutputStream();
// }
/**
* @todo 需要最终改造为通用数据库处理接口
*/
// <modify author="jdyao" time="2005-07-26">
try {
Method methodToInvoke = b.getClass().getMethod(
"getBinaryOutputStream", (Class[]) null);
os = (OutputStream) methodToInvoke.invoke(b, (Object[]) null);
} catch (Exception e) {
throw new SQLException(e.getMessage());
}
// os = ( (oracle.sql.BLOB) b).getBinaryOutputStream();
// </modify>
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write(buf);
bos.flush();
bos.close();
}
}
public static synchronized void writeBLOB(ResultSet rs, String fieldName,
InputStream in) throws SQLException, IOException {
if (in == null) {
return;
}
OutputStream os = null;
Blob b = rs.getBlob(fieldName);
if (b == null) {
throw new SQLException("刚刚插入或更新的BLOB指针为空!");
} else {
// if (Conn.isUseConnectionPool()){
// os =
// ((weblogic.jdbc.vendor.oracle.OracleThinBlob)b).getBinaryOutputStream();
// }
// else{
// os = ((oracle.sql.BLOB)b).getBinaryOutputStream();
// }
// <modify author="jdyao" time="2005-07-26">
try {
Method methodToInvoke = b.getClass().getMethod(
"getBinaryOutputStream", (Class[]) null);
os = (OutputStream) methodToInvoke.invoke(b, (Object[]) null);
} catch (Exception e) {
throw new SQLException(e.getMessage());
}
// os = ( (oracle.sql.BLOB) b).getBinaryOutputStream();
// </modify>
BufferedOutputStream bos = new BufferedOutputStream(os);
BufferedInputStream bis = new BufferedInputStream(in);
byte buf[] = new byte[BUFFER_SIZE];
int len = -1;
while ((len = bis.read(buf)) != -1) {
bos.write(buf, 0, len);
}
bis.close();
bos.flush();
bos.close();
}
}
public static synchronized void writeCLOB(ResultSet rs, String fieldName,
String buf) throws SQLException, IOException {
if (buf == null) {
return;
}
Writer wr = null;
Clob c = rs.getClob(fieldName);
if (c == null) {
throw new SQLException("刚刚插入或更新的CLOB指针为空!");
} else {
// <modify author="jdyao" time="2005-07-26">
try {
Method methodToInvoke = c.getClass().getMethod(
"getCharacterOutputStream", (Class[]) null);
wr = (Writer) methodToInvoke.invoke(c, (Object[]) null);
} catch (Exception e) {
throw new SQLException(e.getMessage());
}
// wr = ((oracle.sql.CLOB) c).getCharacterOutputStream();
// </modify>
BufferedWriter bw = new BufferedWriter(wr);
bw.write(buf);
bw.flush();
bw.close();
}
}
public static synchronized void writeCLOB(ResultSet rs, String fieldName,
InputStream in) throws SQLException, IOException {
if (in == null) {
return;
}
Writer wr = null;
Clob c = rs.getClob(fieldName);
if (c == null) {
throw new SQLException("刚刚插入或更新的CLOB指针为空!");
} else {
//<modify author="jdyao" time="2005-07-26">
try {
Method methodToInvoke = c.getClass().getMethod(
"getCharacterOutputStream", (Class[]) null);
wr = (Writer) methodToInvoke.invoke(c, (Object[]) null);
} catch (Exception e) {
throw new SQLException(e.getMessage());
}
//wr = ((oracle.sql.CLOB) c).getCharacterOutputStream();
//</modify>
BufferedWriter bw = new BufferedWriter(wr);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
char buf[] = new char[BUFFER_SIZE];
int len = -1;
while ( (len = br.read(buf)) != -1) {
bw.write(buf, 0, len);
}
br.close();
bw.flush();
bw.close();
}
}
}
分享到:
相关推荐
Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis ...通过使用 MyBatis 处理 CLOB 和 BLOB 类型数据,可以方便地存储和读取大字段类型的数据,提高应用程序的性能和可扩展性。
在不同数据库系统中,对LOB的支持和处理方式可能有所不同。 2. **DB2与Oracle对LOB的支持**: IBM DB2数据库对LOB对象提供了良好的支持,而WII(Websphere Information Integrator)的复制功能在非DB2数据库中对...
具体来说,可以使用`GbsConnection`类的`GetGbsBlob()`和`GetGbsClob()`方法来获取Blob和Clob对象。这两个方法允许你创建一个适配于GBase数据库的Blob或Clob实例,然后将其作为参数传递给SQL命令,这样就能正确地...
在Delphi编程环境中,处理这类数据时需要掌握特定的API调用和方法。本篇文章将深入探讨如何在Delphi中对Oracle数据库的BLOB字段进行读写操作。 首先,你需要在Delphi项目中引入Oracle数据库访问的相关组件,如...
DBeaver (dbeaver-ce-21.3.2-win32.win32.x86_64.zip)适用于Windows 64 位 (zip)。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。
DBeaver (dbeaver-ce-21.2.5-macos-aarch64.dmg)适用于Mac OS X M1 (dmg) – beta。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。
DBeaver (dbeaver-ce-21.2.5-stable.x86_64.rpm)适用于Linux RPM 包 64 位(安装程序)...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。
DBeaver (dbeaver-ce-21.2.5-win32.win32.x86_64.zip)适用于Windows 64 位 (zip)。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。
DBeaver (dbeaver-ce-21.2.5-linux.gtk.x86_64.tar.gz)适用于Linux 64 位 (zip)。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。
dbeaver是免费和开源(ASL)为开发人员和数据库管理员通用数据库工具。...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。
DBeaver (dbeaver-ce-21.2.5-linux.gtk.aarch64-nojdk.tar.gz)适用于Linux ARM 64 位...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。
DBeaver (dbeaver-ce-21.2.5-linux.gtk.x86_64-nojdk.tar.gz)适用于Linux x86 64 位...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。
beaver是一款非常给力的通用数据库管理工具和SQL客户端,...今日为用户提供的是dbeaver中文版,软件提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等.
DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。 支持的数据库编辑 播报 DBeaver经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM ...
DBeaver Enterprise提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。DBeaver Enterprise经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM ...
DBeaver Enterprise提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。DBeaver Enterprise经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM ...
DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。 DBeaver经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM DB2、Microsoft SQL ...
DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。 DBeaver经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM DB2、Microsoft SQL ...
DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。 DBeaver经官方测试,其支持:MySQL、Oracle、PostgreSQL、IBM DB2、Microsoft SQL ...
DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, ...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。