站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题连续写入image类型的字段时出现错误,请那位高手帮助看看

连续写入image类型的字段时出现错误,请那位高手帮助看看

摘要: 连续写入image类型的字段时出现错误,请那位高手帮助看看


我现在做一个导数据的操作,从一个库的一个表中导数据到另一个库的一个表中,常规类型的字段都没有问题,当遇到image类型的字段时遇到错误,如果只写入一行记录,没问题,可是如果连续写入两行以上就出错了,请那位高手看看,帮忙解决,一定重谢。
代码如下:
public void importJLImageData(HttpServletRequest request) throws DAOException, SQLException
{
try
{
String projectCode = "";
InputStream inputLen = null;//用于获取流的长度
InputStream inputImp = null;//用于导入
int len = 0;
Connection connJLDB = dbDAO.getJLConnection(request);
Statement stmtJLDB = connJLDB.createStatement();
ResultSet rsJLDB = null;
Statement stmtJLDB2 = connJLDB.createStatement();
ResultSet rsJLDB2 = null;

Connection conn = DbCommon.getInstance().getConnection();
PreparedStatement preStmt = conn.prepareStatement("insert into xg_projectfile"
+ "(projectcode, filename, content) values(?, ?, ?)");

strSQL = "select num_app,prj_content from prj_content where "
+ "num_app in (select num_app from prj_base where "
+ "expflag != 'Y' or expflag is null)";
rsJLDB = stmtJLDB.executeQuery(strSQL);
rsJLDB2 = stmtJLDB2.executeQuery(strSQL);
while(rsJLDB.next())
{
rsJLDB2.next();
projectCode = rsJLDB.getString("num_app").trim();
inputLen = rsJLDB.getBinaryStream("prj_content");
inputImp = rsJLDB2.getBinaryStream("prj_content");
while(inputLen.read() != -1)
{
len++;
}
preStmt.setString(1, projectCode);
preStmt.setString(2, "项目内容附件");
preStmt.setBinaryStream(3, inputImp, len);
preStmt.execute();
//重置参数
preStmt.clearParameters();
inputLen = null;
inputImp = null;
}
//关闭输入流
if(inputLen != null)
inputLen.close();
if(inputImp != null)
inputImp.close();
//关闭数据库联接
if(rsJLDB != null)
rsJLDB.close();
if(stmtJLDB != null)
stmtJLDB.close();
if(rsJLDB2 != null)
rsJLDB2.close();
if(stmtJLDB2 != null)
stmtJLDB2.close();
if(connJLDB != null)
connJLDB.close();
if(preStmt != null)
preStmt.close();
if(conn != null)
conn.close();
}
catch (Exception ex)
{
Debug.debug(ex);
throw new DAOException("importing image type data failed:" + ex.getMessage());
}
finally
{
}
}


出现什么错误,错误信息?



错误信息


lz,把你得错误帖出来看看,才能帮你解决问题啊!


呵呵,不好意思,忘了把错误贴出来了,真是对不起,下面就是:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Connection res
et
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source
)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Sour
ce)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType
(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown
Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown
Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeInternal(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.execute(Unknown Source)

at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(Delegatin
gPreparedStatement.java:168)
at com.tgjl.dataexchange.dao.ImportDataDAO.importJLImageData2(ImportData
DAO.java:790)
at com.tgjl.dataexchange.dao.ImportDataDAO.importJLData(ImportDataDAO.ja
va:710)
at com.tgjl.dataexchange.action.ImportDataAction.importData(ImportDataAc
tion.java:53)
at com.tgjl.dataexchange.action.ImportDataAction.process(ImportDataActio
n.java:31)
at com.waf.action.BaseAction.execute(BaseAction.java:70)
at org.apache.jsp.dataExchange.importData.detail_jsp._jspService(detail_
jsp.java:66)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:2
92)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:157)
at com.waf.security.action.SignOnFilter.doFilter(SignOnFilter.java:95)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(Standard
ContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:16
0)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:683)
at java.lang.Thread.run(Thread.java:595)



上面的错误是一部份,这还有一部分:
com.waf.db.DAOException: importing image type data failed:[Microsoft][SQLServer
2000 Driver for JDBC]Connection reset
at com.tgjl.dataexchange.dao.ImportDataDAO.importJLImageData2(ImportData
DAO.java:821)
at com.tgjl.dataexchange.dao.ImportDataDAO.importJLData(ImportDataDAO.ja
va:710)
at com.tgjl.dataexchange.action.ImportDataAction.importData(ImportDataAc
tion.java:53)
at com.tgjl.dataexchange.action.ImportDataAction.process(ImportDataActio
n.java:31)
at com.waf.action.BaseAction.execute(BaseAction.java:70)
at org.apache.jsp.dataExchange.importData.detail_jsp._jspService(detail_
jsp.java:66)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:2
92)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:157)
at com.waf.security.action.SignOnFilter.doFilter(SignOnFilter.java:95)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(Standard
ContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:16
0)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:683)
at java.lang.Thread.run(Thread.java:595)


你不要用PreparedStatement,用Statement试试


经验不足啊,帮顶


谢谢各位的热心帮助,我发现,从一个数据库导出数据到另一个数据库时,对于image类型数据就有这个问题,可是如果是从硬盘上的一个目录中连续读取文件到数据库中,就可以成功,真是不知道什么原因啊,令人费解,不管如何,我还是要感谢各位的。


另外就是想问一下楼上的infowain(infowain) 大哥,你说用statement的用法是什么啊,能不能举个例子,让我看一下,谢谢了,还想再问一下,你在项目中如果遇到类似的问题是怎么解决的啊


↑返回目录
前一篇: SPRING+JSF+Hibernate出错,请高手帮忙!
后一篇: 名词解释