2015-12-16 4 views
0

Почему я получаю SQLException с моим запросом?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); 
%> 
+0

Полный след следа исключения? –

ответ

0

вызов next перед вызовом getInt

ResultSet a = stmt.executeQuery(); 

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

Я пробовал, и это дало мне следующее: org.apache.jasper.JasperException: java.lang.ClassCastException: com.sun.enterprise.naming.impl.JavaURLContext нельзя отнести к javax.sql.DataSource – pokatore

+0

Я подозреваю, что это происходит в другой части кода. Обновите свой вопрос с полной информацией ... – Reimeus

0

ResultSet Javadoc говорит (частично) первоначально курсор располагается перед первой строкой. Таким образом, вам нужно позвонить в next. Добавить что-то вроде

if (a.next()) { 
    return a.getInt(1); 
} 
return -1; 
Смежные вопросы