2005-01-24 oracle中blob字段下载后的乱码问题
来源:互联网 发布:路由器怎么连接网络 编辑:程序博客网 时间:2024/05/22 07:54
oracle大容量数据类型
BLOB、CLOB、和 NCLOB:它们在数据库中要么存储在表中,要么存储在单独的段或表空间中。
BLOB 能够存储大容量的二进制数据,典型例子有图形图像和照片。
CLOB 能够存储大容量的字符数据,而且对于存储非结构化的 XML 文档很有用。
NCLOB:由对应于为 Oracle 数据库定义的本地字符集的字符数据组成。
BFILE:它们作为操作系统文件存储。
BFILE 是一种 LOB 类型,它的值由二进制(“原始”)数据组成,而且存储在数据库表空间之外的服务器端操作系统文件中。
oracle中blob字段下载后的乱码问题
解决oracle中blob字段下载后的乱码问题,注意不能按照像其他数据库那样的取法,而注意使用getBlob()这个oracle特有的方法。
错误(在其他数据库中行的通)
private static final String QUERY_ATTACHID = "SELECT TEC_ATTACHID,TEC_ATTACHCONTENT,TEC_ATTACHPOSTFIX "
+ "FROM TFZN_018_KTFJXX WHERE TEC_ATTACHID=?";
stmt = connection.prepareStatement(QUERY_ATTACHID);
stmt.setLong(1, attachId.longValue());
queryResult = stmt.executeQuery();
Tfzn018KtfjxxPO tfzn018KtfjxxPO = new Tfzn018KtfjxxPO();
if (queryResult.next()) ...{
tfzn018KtfjxxPO.setTec_attachcontent(queryResult.getBytes("TEC_ATTACHCONTENT"));
tfzn018KtfjxxPO.setTec_attachid(queryResult.getLong("TEC_ATTACHID"));
tfzn018KtfjxxPO.setTec_attachpostfix(queryResult.getString("TEC_ATTACHPOSTFIX"));
}
+ "FROM TFZN_018_KTFJXX WHERE TEC_ATTACHID=?";
stmt = connection.prepareStatement(QUERY_ATTACHID);
stmt.setLong(1, attachId.longValue());
queryResult = stmt.executeQuery();
Tfzn018KtfjxxPO tfzn018KtfjxxPO = new Tfzn018KtfjxxPO();
if (queryResult.next()) ...{
tfzn018KtfjxxPO.setTec_attachcontent(queryResult.getBytes("TEC_ATTACHCONTENT"));
tfzn018KtfjxxPO.setTec_attachid(queryResult.getLong("TEC_ATTACHID"));
tfzn018KtfjxxPO.setTec_attachpostfix(queryResult.getString("TEC_ATTACHPOSTFIX"));
}
改正后(oracle中使用)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (queryResult.next()) ...{
tfzn018KtfjxxPO.setTec_attachid(queryResult.getLong("TEC_ATTACHID"));
tfzn018KtfjxxPO.setTec_attachpostfix(queryResult.getString("TEC_ATTACHPOSTFIX"));
java.sql.Blob blob = queryResult.getBlob("TEC_ATTACHCONTENT");
InputStream is = blob.getBinaryStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 从输入流读到字节数组
while ((bytesRead = is.read(buffer, 0, 8192)) != -1) ...{
// 从字节数组到输出流
baos.write(buffer, 0, bytesRead);
}
byte[] bufferFile = baos.toByteArray();
tfzn018KtfjxxPO.setTec_attachcontent(bufferFile);
connection.commit();
}
if (queryResult.next()) ...{
tfzn018KtfjxxPO.setTec_attachid(queryResult.getLong("TEC_ATTACHID"));
tfzn018KtfjxxPO.setTec_attachpostfix(queryResult.getString("TEC_ATTACHPOSTFIX"));
java.sql.Blob blob = queryResult.getBlob("TEC_ATTACHCONTENT");
InputStream is = blob.getBinaryStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 从输入流读到字节数组
while ((bytesRead = is.read(buffer, 0, 8192)) != -1) ...{
// 从字节数组到输出流
baos.write(buffer, 0, bytesRead);
}
byte[] bufferFile = baos.toByteArray();
tfzn018KtfjxxPO.setTec_attachcontent(bufferFile);
connection.commit();
}
- 2005-01-24 oracle中blob字段下载后的乱码问题
- oracle中读写blob字段的问题
- 关于oracle中blob字段的录入问题
- oracle中读写blob字段的问题解析
- 关于oracle中blob字段查询的问题
- Oracle中BLOB字段的操作
- ORACLE中BLOB字段查询的方法
- Oracle数据库中BLOB字段的介绍
- ORACLE中BLOB字段查询的方法
- oracle数据库远程链接后访问BLOB字段问题
- Oracle中得blob字段导入到DB2的Blob字段
- Oracle中得blob字段导入到DB2的Blob字段
- oracle更换表空间 blob字段带来的问题
- Oracle中Blob字段的写入处理(一)
- Oracle中Blob字段的写入处理(一)
- java对oracle中blob字段的操作
- Delphi与Oracle中BLOB字段的操作
- Delphi与Oracle中BLOB字段的操作
- C#对Microsoft.VisualBasic 的应用(繁简转换等)
- javascript分页
- JDK6新特性之二 使用Compiler API
- 批处理文件的DOS常用命令
- 使用Javascript制作声音按钮
- 2005-01-24 oracle中blob字段下载后的乱码问题
- CSS Hack 汇总快查
- JavaScript技巧
- java.lang.reflect.Filed
- 期待这本书:Pro Django: Web Development Done Right
- 有线程的程序会内存不足
- GDB使用教程
- Toad中文导出到Excel的乱码解决办法
- 写得蛮好的linux学习笔记