2014-01-14 2 views
0

온라인 뱅킹 시스템 프로젝트를 개발 중입니다. JDBC를 사용하여 데이터베이스에서 데이터를 검색하려고합니다. 그러나 쿼리가 SQLPlus에서 행을 반환하지만 Exhausted 결과 예외가 표시됩니다. 도와주세요. 여기에 코드입니다 : 당신이 문 번호에하는 executeQuery에 SQL을 통과 할 때지쳐 결과 집합

try 
{ 

    Class.forName("oracle.jdbc.OracleDriver"); 

    con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "hr", "XXXXXX"); 
    String pass = 'sid'; 
    String user = 'sid'; 
    String accountnumber = '2345'; 
    String sql = "select * from user_info where account_number=?"; 


    s1 = con.prepareStatement(sql); 
    s1.setString(1,accountnumber); 

    rs1 = s1.executeQuery(sql); 
    rs1.next(); 

    if(user.equals(rs1.getString("user_name"))) 
    { 
     if(pass.equals(rs1.getString("password"))) 
     { 
      if(accountnumber.equals(rs1.getString("account_number"))) 
      { 
       new AccountInformation(accountnumber).setVisible(true); 
      } 
      else 
      { 
       JOptionPane.showMessageDialog(this, "Account Number is Incorrect"); 
      } 
     } 
     else 
     { 
      JOptionPane.showMessageDialog(this, "Password is Incorrect"); 
     } 
    } 
    else 
    { 
     JOptionPane.showMessageDialog(this, "User Name is Incorrect"); 
    } 
} 
catch(Exception e) 
{ 
    JOptionPane.showMessageDialog(this,e); 
} 
+3

이동은 시간 암호를 변경! –

답변

2

당신은 당신의 바인드 매개 변수를 멀리 던졌다 - PreparedStatement의에서 this one를 사용 ...

rs1=s1.executeQuery(); 
// rs1=s1.executeQuery(sql); 

// check if you got a row 
if (rs1.next()) { 
    // as before.... 
} 
+0

@ user3195025'executeQuery (sql)'(OP 코드에서 가져옴)는 [Statement] (http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeQuery (java.lang.String)) 클래스에서 사용되는 반면 executeQuery()는 [PreparedStatement] (http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html) 클래스의 메소드입니다. #executeQuery()) 클래스. OP가 PreparedStatement를 생성하는 문제를 겪은 다음 Statement에서 덜 안전한'executeQuery (sql)'메소드를 대신 사용하는 것처럼 보입니다. – mdl

+1

@mdl'PreparedStatement' (또는'CallableStatement')에 대해'executeQuery (String)'(또는 문자열 매개 변수를 가진 유사한 실행 메소드)가 호출되면'PreparedStatement'의 JDBC 호환 구현이 항상 예외를 던져야합니다. –