在jsp中如何往blob字段插入文件?在线等待

stailong 2002-11-05 08:33:04
我用以下程序来对blob字段test_picture插入图片
<% File file = new File("C:\\temp\\xiamenbridge.jpg");
String fileName = file.getName();
out.println(fileName);
FileInputStream inStream = new FileInputStream(file);
byte[] buffer = new byte[inStream.available()];
String sqlStr = "INSERT INTO TEST VALUES(5,'"+fileName+"', empty_blob())";
ResultSet rs1 = SqlBean.executeQuery(conn,sqlStr);
ResultSet rs = SqlBean.executeQuery(conn,"select test_picture from TEST where test_id=5");
if(rs.next())
{
BLOB blob = ((OracleResultSet)rs).getBLOB("test_picture");
OutputStream outStream = blob.getBinaryOutputStream();
inStream.read(buffer);
outStream.write(buffer);
outStream.flush();
inStream.close();
rs.close();
out.println("插入成功");
}
%>



但结果是把test_id和test_contents值插入了,却没能把图片ximanbridge.jpg插入成功,且错误提示为:
Internal Servlet Error:

java.io.IOException: ORA-22920: 未锁定含有 LOB 值的行
ORA-06512: 在"SYS.DBMS_LOB", line 700
ORA-06512: 在line 1

at oracle.jdbc.dbaccess.DBError.SQLToIOException(DBError.java:531)
at oracle.jdbc.driver.OracleBlobOutputStream.flushBuffer(OracleBlobOutputStream.java:179)
at oracle.jdbc.driver.OracleBlobOutputStream.write(OracleBlobOutputStream.java:125)
at java.io.OutputStream.write(OutputStream.java:61)
....

请问是什么问题,如何解决?


...全文
42 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chooser 2002-11-06
  • 打赏
  • 举报
回复
以下几个方面:
1.setAutoCommit(false),然后显式提交事务;
2.sql1="begin insert into lobtest(id,data) values(?,empty_blob()) return data into ?;end;"
3.stmt.setInt(1,...);
stmt.registerOutParameter(2,OracleTypes.BLOB);
BLOB blob=stmt.getBLOB(2);
OutputStream outStream = blob.getBinaryOutputStream();
bzszp 2002-11-06
  • 打赏
  • 举报
回复
对于blob类型的字段,需要使用dbms_lob包对其进行处理
查看oracle自带文档,里面有介绍
stailong 2002-11-06
  • 打赏
  • 举报
回复
请帮忙!!!
  • 打赏
  • 举报
回复
gz

17,381

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧