2013-09-21 14 views
0

當我執行搜索查詢時,出現錯誤「java.sql.SQLException:空結果集上的非法操作」。我想從我的數據庫獲取日期到jDateChoser。這是我試過的,請幫助我!提前致謝!當我執行搜索查詢時,如何將日期從sql數據庫恢復到netbeans jdatechooser?

try { 
     Statement s = DB2.kavish().createStatement(); 

     ResultSet rs = s.executeQuery("SELECT * FROM Invoice WHERE Invoice_No='"+jTextField28.getText()+"'"); 

     while (rs.next()); 

     jTextField29.setText(rs.getString(2)); 
     jTextField30.setText(rs.getString(3)); 
     jTextField31.setText(rs.getString(4)); 
     jTextField32.setText(rs.getString(5)); 
     jTextField33.setText(rs.getString(6)); 
     jTextField34.setText(rs.getString(7)); 
     jTextField35.setText(rs.getString(8)); 
     jDateChooser1.setDate(rs.getDate(9)); 


    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
+0

我能說一點嗎?請永遠不要根據文本字段的輸入直接創建SQL。你會想使用一個PreparedStatement,而不是一個Statement,並放置一個'?' (或名稱)輸入參數,以避免常見的[SQL注入攻擊](http://en.wikipedia.org/wiki/SQL_injection)。 – Thor84no

回答

0

使用你已經在這行這裏分號;通過以下方式

try{ 
Statement s = DB2.kavish().createStatement(); 
     ResultSet rs = s.executeQuery("SELECT * FROM Invoice WHERE Invoice_No='"+jTextField28.getText()+"'"); 

     while (rs.next()){ 

     jTextField29.setText(rs.getString(2)); 
     jTextField30.setText(rs.getString(3)); 
     jTextField31.setText(rs.getString(4)); 
     jTextField32.setText(rs.getString(5)); 
     jTextField33.setText(rs.getString(6)); 
     jTextField34.setText(rs.getString(7)); 
     jTextField35.setText(rs.getString(8)); 
     jDateChooser1.setDate(rs.getDate(9)); 

} 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

while (rs.next()); 刪除

最初,光標在第一行之前的位置。方法rs.next將光標移動到下一行。如果光標位於最後一行之後,則此方法返回false。此方法通過while循環重複調用ResultSet.next方法來遍歷ResultSet中的所有數據。 您試圖while循環,這意味着光標已經在底部,所以沒有的數據都是there.Hence它投擲例外

注意

SQL Injection防止去PreparedStatement,而不是作爲Statement後檢索如下

PreparedStatement pt=DB2.kavish().prepareStatement("SELECT * FROM Invoice WHERE Invoice_No=?"); 
pt.setString(1,jTextField28.getText()); 
ResultSet rs=pt.executeQuery(); 
while (rs.next()){ 

    jTextField29.setText(rs.getString(2)); 
    jTextField30.setText(rs.getString(3)); 
    jTextField31.setText(rs.getString(4)); 
    jTextField32.setText(rs.getString(5)); 
    jTextField33.setText(rs.getString(6)); 
    jTextField34.setText(rs.getString(7)); 
    jTextField35.setText(rs.getString(8)); 
    jDateChooser1.setDate(rs.getDate(9)); 

} 
} catch (Exception e) { 
e.printStackTrace(); 
} 
相關問題