如何保存一个InputStream流到sql2005某一字段,我的字段名称为fileContent,类型为image
我的部分代码如下
rs=pstmt.executeQuery();
if(rs.next()){
Blob blob= rs.getBlob("FILECONTENT");
OutputStream outStream=blob.setBinaryStream(1l);
InputStream inStream=m.getFileContent1();//m.getFileContent1()得到InputStream流
// int size=blob.getBufferSize();
byte[] b=new byte[inStream.available()];
int n=0;
while((n=inStream.read(b))!=-1){
outStream.write(b, 0, n);
}
inStream.close();
outStream.close();
}
但是我读的时候
String QuerySQL="select * from OA_MailFileInfo where fileid="+fileId;
ResultSet rs=stmt.executeQuery(QuerySQL);
if (rs.next()) {
Blob b = rs.getBlob("fileContent");
long size = b.length();
}
size为0,我想肯定是保存到数据库时没有保存成功,哪位高手帮我解决下,不胜感激
------解决方案--------------------------------------------------------
http://zhidao.baidu.com/question/129752690
楼主看看这个
------解决方案--------------------------------------------------------
在查询之前把inStream insert into 到你指定表的字段里就好了啊??
------解决方案--------------------------------------------------------
去看java年鉴,各种大数据保存到各种数据库
http://www.herongyang.com/jdbc/SQL-Server-CLOB-setCharacterStream
到这里面找,再看看下面的链接
------解决方案--------------------------------------------------------
先把二进制流进行base64 编码,audioStr = new BASE64Encoder().encode(bs); 将btye【】变成String进行保存,取得时候用base64解码,注意得到的字符串最好不要拆分或添加什么,否则会出现乱码情况