Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在从JSP页面调用的方法中始终引发异常_Java_Sql_Jsp_Postgresql_Sqlexception - Fatal编程技术网

Java 在从JSP页面调用的方法中始终引发异常

Java 在从JSP页面调用的方法中始终引发异常,java,sql,jsp,postgresql,sqlexception,Java,Sql,Jsp,Postgresql,Sqlexception,我知道这是一个测试查询,它可以工作并返回14 private static final String TEST = "SELECT album_id FROM Album"; 每次执行以下方法时,都会引发异常,并返回变量x而不是我的album_id public String getAlbumId(String email, String album_name) { PreparedStatement stmt = null; Connection conn = null;

我知道这是一个测试查询,它可以工作并返回14

private static final String TEST = "SELECT album_id FROM Album";
每次执行以下方法时,都会引发异常,并返回变量x而不是我的album_id

public String getAlbumId(String email, String album_name) {
    PreparedStatement stmt = null;
    Connection conn = null;
    ResultSet rs = null;
    try{
        conn = DbConnection.getConnection();
        stmt = conn.prepareStatement(TEST);
        //stmt.setString(1, email);
        //stmt.setString(2, album_name);
        rs = stmt.executeQuery();
        String album_id = rs.getString(1);
        return album_id;
    }
    catch(SQLException e) { String x="-1"; return x; }
}
调用此方法的jsp代码部分如下所示:

<table>
<%
  AlbumDao album2 = new AlbumDao();
  String myid;
  int actualid;
  for(String item : album_names) {
      myid = album2.getAlbumId(email,item);
      actualid = Integer.parseInt(myid);
      System.out.println(myid);
%>
<tr>
  <td><a href="display_album.jsp?album_id=<%=actualid%>"><% out.print(item);%></a></td>
</tr>
  <%}%>

您需要在
rs.getString(1)
之前调用
rs.next()。异常也暗示了同样的情况

请提供您遇到的异常的stackdump。可以。让我很快地把它添加到问题中,这听起来可能有点傻,但我假设您没有真正使用该查询?上面显示的查询是一个测试查询,我100%知道答案。我现在正在使用它,因为数据库中只有一张专辑。因此,只有一个返回值。异常stacktrace说它非常清晰。花点时间阅读它,也许用谷歌搜索一下。新手看到的大多数错误已经被纠正了无数次。谢谢!这解决了问题。只是想知道,在executeQuery()方法返回后,ResultSet指向什么?您是否使用
rs.next()
将其定位到第一个元素?是的,Javadocs说,
ResultSet对象维护一个指向其当前数据行的光标。最初,光标位于第一行之前。下一个方法将光标移动到下一行,因为当ResultSet对象中没有更多行时,它返回false,所以当首次创建ResultSet对象时,可以在while循环中使用它来迭代结果集,光标位于第一行之前。只有在调用“next”后,光标才指向第一行。这看起来很合理,因为有时你不会得到任何结果。有关更多详细信息,请参阅JDBC 4.1规范中的第15.2.2节,@asgs sorry在发布我的评论之前没有看到您的评论
org.postgresql.util.PSQLException: ResultSet not positioned properly, perhaps you need to call next.
    at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2452)
    at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1882)
    at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:174)
    at photoshare.AlbumDao.getAlbumId(AlbumDao.java:66)
    at org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:103)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)