繁体   English   中英

SQLException:无效的游标状态

[英]SQLException: invalid cursor state

为什么我的查询中出现SQLException

PreparedStatement stmt = con.prepareStatement("SELECT note FROM NOTES4EME WHERE id=?");
stmt.setString(1,"1");
ResultSet a = stmt.executeQuery();
return a.getInt(1);

我想念什么?

我有一种方法:

public int afficheNote(int id) throws ClassNotFoundException, SQLException {
        Class.forName("org.apache.derby.jdbc.ClientDriver");

        String url = "jdbc:derby://localhost:1527/TLdb;create=true;user=root;password=root";

        Connection con = DriverManager.getConnection(url);

        String query = "SELECT NOTES FROM NOTES4EME WHERE ID = '" + id + "'";

        //PreparedStatement stmt = con.prepareStatement(query);


        PreparedStatement stmt = con.prepareStatement("SELECT note FROM NOTES4EME WHERE id=?");
        stmt.setString(1,"1");
        ResultSet a = stmt.executeQuery();
        if (a.next()) {
        return a.getInt(1);
        }
        return -1;

    }

我在.JSP中调用此方法:

<% 
  int a = mybean.afficheNote(1);
%>

在调用getInt之前先调用next

ResultSet a = stmt.executeQuery();

if (a.next()) {
   return a.getInt(1);
} else {
   throw new IllegalArgumentException("Nothing found for 1...");
}

ResultSet Javadoc说(部分) 最初是将光标放置在第一行之前。 因此,您需要致电next 添加类似

if (a.next()) {
    return a.getInt(1);
}
return -1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM