Java org.postgresql.util.psqleexception:ResultSet未正确定位,可能需要调用next
这是我的代码,我得到了这个错误Java org.postgresql.util.psqleexception:ResultSet未正确定位,可能需要调用next,java,psql,Java,Psql,这是我的代码,我得到了这个错误 String id = request.getParameter("id"); try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql://172.10.10.3:5432/stepup380qty","stepup380qty","stepup38
String id = request.getParameter("id");
try {
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://172.10.10.3:5432/stepup380qty","stepup380qty","stepup380qty");
String query = "select binarydata from ad_image where ad_image_id =" + id;
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery(query);
rs.next();
String img = rs.getString("binarydata");
byte[] img2 = new byte[img.length()];
InputStream imgstream = rs.getBinaryStream("binarydata");
int index = imgstream.read(img2, 0, img.length());
stm.close();
response.reset();
response.setContentType("image/jpg");
response.getOutputStream().write(img2,0,img2.length);
response.getOutputStream().flush();
imgstream.close();
}
catch (SQLException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
根据javadocs for
next
当对next方法的调用返回false时,光标位于最后一行之后。任何需要当前行的ResultSet方法调用都将导致SQLException被抛出。您应该检查next
的返回结果,以确定是否有可以使用的结果。我没有找到解决这个问题的办法。。。我加了rs.close();但它仍然显示出同样的错误
org.postgresql.util.PSQLException: ResultSet not positioned properly, perhaps you need to call next.
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2881)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1956)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:2568)
at ireportImage.IreportIMAGE.doGet(IreportIMAGE.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)