2012-06-13 108 views
1

我正在開發個人項目。我正在創建一個打卡時鐘程序,因此我需要幫助的部分是用戶在jTextField中輸入uid的位置。所以,我需要檢索uid(#######),然後用sql語句在數據庫中搜索該uid。所以這就是我迄今爲止的情況。問題是,有jTextField1.getText下紅線,當,當我運行它,說=如何從jTextField中檢索信息

"setInt(int,int) in java.sql.PreparedStatement cannot be applied to (int,java.lang.String) pstmt.setInt(1, jTextField1.getText());"

任何幫助表示讚賞。謝謝。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    try{ 
     stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     String sql = "SELECT * FROM Students WHERE STUDENTID = ?"; 
     PreparedStatement pstmt = con.prepareStatement(sql); 
     pstmt.setInt(1, jTextField1.getText()); // Retrieve uid from jTextField 
     ResultSet rs = pstmt.executeQuery(); 
     while(rs.next()){ 
      String first = rs.getString(2); 
      String last = rs.getString(3); 
      String hours = rs.getString(6); 

      fName.setText(first); 
      lName.setText(last); 
      tHours.setText(hours); 
     } 
    } 
    catch(SQLException err){ 
     JOptionPane.showMessageDialog(Student.this, err.getMessage()); 
    } 

} 
+4

有什麼問題? – user845279

+0

SORRY !!問題是在jTextField1.getText下有一條紅線,當我運行它時,在java.sql.PreparedStatement中說=「setInt(int,int)不能應用於(int,java.lang.String) pstmt.setInt(1,jTextField1.getText());「 –

+0

[離題]:這種方法是由EDT調用的嗎?你可能不想在美國東部時間做這個I/O。 –

回答

5

你可以從documentation看到,setInt()方法需要兩個參數int

public void setInt(int parameterIndex, 
        int x) 

所以,你需要改變這一點:

pstmt.setInt(1, jTextField1.getText()); 

到:

pstmt.setInt(1, Integer.parseInt(jTextField1.getText())); 

因爲getText()方法returns a String

+0

非常感謝Gaara先生我感謝您的慷慨幫助。現在它起作用了,這很可愛。 –

6

jTextField1.getText()將返回字符串中使用parseInt轉換成int

pstmt.setInt(1, Integer.parseInt(jTextField1.getText())); 
+0

非常感謝。感謝您的幫助和時間 –

+0

歡迎您 – mprabhat