2012-06-13 41 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