java 读取blob类型存成.doc操作!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 读取blob类型存成.doc操作!!相关的知识,希望对你有一定的参考价值。
写了一个类,是读取content表中attach(blob类型)列的值。然后存储成.doc文件。现在报错 ,高手帮忙给看看呗!!!
package fd;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import oracle.sql.*;
public class Test
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
private ResultSet getResultSet()
try Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@18.18.18.21:1521:oradb";
String user = "tjxt";
String password = "tjxt";
con = DriverManager.getConnection(url, user, password);
stmt = con.createStatement();
String sql = "select attach from content where indexno='XXXXX-1001-2009-00001'";
rs = stmt.executeQuery(sql);
catch (Exception e)
e.printStackTrace();
return rs;
public void InputDoc()
Test temp = new Test();
ResultSet rset = temp.getResultSet();
try
while (rset.next())
oracle.sql.BLOB blob = (oracle.sql.BLOB) rset.getBlob("attach");
File f = new File("f:\\test\\1.doc");
FileOutputStream fos = new FileOutputStream(f);
InputStream is = blob.getBinaryStream();// 读出数据后转换为二进制流
byte[] data = new byte[1024];
while (is.read(data) != -1)
fos.write(data);
fos.close();
is.close();
con.commit(); //正式提交
rset.close();
catch (Exception e)
public static void main(String[] args)
Test temp = new Test();
temp.InputDoc();
找了下原因
FileOutputStream fos = new FileOutputStream(f);
没有执行!!
求解!!!
con.commit(); //正式提交
rset.close();
改成:
if (con != null)
con.commit(); // 正式提交
rset.close();
还有:
File f = new File("f:\\test\\1.doc");
后面加一句
if (!f.exists())
f.mkdir();
另外建议你操作完成后把该关闭的都关闭 比如con.close();
stmt.close();等等
补充:
我这边的测试已经成功,可以写入文件。
你把这个路径“f:\\test\\1.doc”手动建出来,然后试试,不行的话我再帮你查找原因 参考技术A while ((int len = is.read(data)) != -1)
fos.write(data,len);
参考技术B 报的什么错啊?
Blob正确读出来了吗?
感觉这么写好像读不出来似的。
jdbc获取blob类型乱码
一、使用场景:
mysql数据库字段类型为longblob,在数据库里看中文字符正常,java读取字串的时候发现中文乱码
使用到了activeMq
二、排查:
(1)修改eclipse的环境编码为utf-8
(2)怀疑是mq读取转码,修改mq的配置文件,指定字符集编码
三、解决:
longblob是二进制类型的,当修改表字段类型为字符类型【longtext】后中文字符正常显示
以上是关于java 读取blob类型存成.doc操作!!的主要内容,如果未能解决你的问题,请参考以下文章