SQLException: 游标状态无效
Posted
技术标签:
【中文标题】SQLException: 游标状态无效【英文标题】:SQLException: invalid cursor state 【发布时间】:2015-12-16 22:07:58 【问题描述】:为什么我的查询会收到 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);
%>
【问题讨论】:
异常的完整堆栈跟踪? 【参考方案1】:在调用getInt
之前调用next
ResultSet a = stmt.executeQuery();
if (a.next())
return a.getInt(1);
else
throw new IllegalArgumentException("Nothing found for 1...");
【讨论】:
我试过了,它给了我这个:org.apache.jasper.JasperException: java.lang.ClassCastException: com.sun.enterprise.naming.impl.JavaURLContext cannot be cast to javax.sql.DataSource 我怀疑这发生在代码的不同部分。使用完整的详细信息更新您的问题...【参考方案2】:ResultSet
Javadoc 说(部分)最初光标位于第一行之前。所以你需要调用next
。添加类似的东西
if (a.next())
return a.getInt(1);
return -1;
【讨论】:
以上是关于SQLException: 游标状态无效的主要内容,如果未能解决你的问题,请参考以下文章
ucanaccess SQL 异常:游标状态无效:已识别游标未打开