把一图片文件存入ORACLE数据库中,用的是BOLB数据类型,可是插不进去!提示IO异常!!
原代码:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<html>
<body>
<%
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@192.168.200.2:1521:CKXX"; ////其中CKXX为SID
String uid="USER";
String pwd="USER";
Connection conn = DriverManager.getConnection(url,uid,pwd);request.setCharacterEncoding("gb2312");
String filename=request.getParameter("image"); try {
FileInputStream str=new FileInputStream(filename);
String sql="insert into CONTROL(V_ID,B_IMAGE) values(11,?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setBinaryStream(1,str,str.available());
pstmt.execute();
out.println("Success,You Have Insert an Image Successfully");
}catch(SQLException e){ out.println(e); }
conn.close();
%>错误提示:
exception javax.servlet.ServletException: Io 异常: Connection reset by peer: socket write error
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.OFFICE.testimage_jsp._jspService(testimage_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: Io 异常: Connection reset by peer: socket write error
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335)
oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:706)
oracle.jdbc.driver.OraclePreparedStatement.privateClose(OraclePreparedStatement.java:335)
oracle.jdbc.driver.OraclePreparedStatement.close(OraclePreparedStatement.java:270)
oracle.jdbc.driver.OracleConnection.close_statements(OracleConnection.java:2003)
oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1227)
org.apache.jsp.OFFICE.testimage_jsp._jspService(testimage_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.
原代码:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<html>
<body>
<%
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@192.168.200.2:1521:CKXX"; ////其中CKXX为SID
String uid="USER";
String pwd="USER";
Connection conn = DriverManager.getConnection(url,uid,pwd);request.setCharacterEncoding("gb2312");
String filename=request.getParameter("image"); try {
FileInputStream str=new FileInputStream(filename);
String sql="insert into CONTROL(V_ID,B_IMAGE) values(11,?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setBinaryStream(1,str,str.available());
pstmt.execute();
out.println("Success,You Have Insert an Image Successfully");
}catch(SQLException e){ out.println(e); }
conn.close();
%>错误提示:
exception javax.servlet.ServletException: Io 异常: Connection reset by peer: socket write error
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.OFFICE.testimage_jsp._jspService(testimage_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: Io 异常: Connection reset by peer: socket write error
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335)
oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:706)
oracle.jdbc.driver.OraclePreparedStatement.privateClose(OraclePreparedStatement.java:335)
oracle.jdbc.driver.OraclePreparedStatement.close(OraclePreparedStatement.java:270)
oracle.jdbc.driver.OracleConnection.close_statements(OracleConnection.java:2003)
oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1227)
org.apache.jsp.OFFICE.testimage_jsp._jspService(testimage_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.
解决方案 »
- web项目名称的疑问
- J2EE程序中如何还原数据库(SQL2005)? 急啊!
- File "/WEB-INF/struts-logic.tld" not found
- 关于动态表单的formbean要怎么实现?
- 伙计做的动网论坛邮件地址收集工具,大家看有什么好的建议?
- 用什么开发工具来开发jsp,除了dw和文本编辑器外!
- 关于复合关键字的问题 ,帮帮我吧,被搞得头晕脑涨
- 如何用JSP实现页面数据表格的打印设置,打印,请回答详细一点,谢谢!
- 疯了,大家帮忙看看,怎么没有显示结果
- hibernate spring的这两种查询有何区别?
- 论坛数据库的图片调用出现问题,什么原因?
- jsp页面如何打印出xml字符串!
但是其他操作都正常的!
这是什么原因呢?
如果入库之前这条记录已经存在,那么:
String updatePhoto =
"update 表 set 图片字段的名字=empty_blob() where 关键字字段的名字 = '"+x+"'";
st.executeUpdate(updatePhoto);
String selectPhoto =
"select 图片字段的名字 from 表 where 关键字字段的名字 = '"+x+"' for update";
rs = st.executeQuery(selectPhoto);
if (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("ZP"); BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(stuImage.getImage());
conn.commit();
conn.setAutoCommit(true); }