1

私は個人的なプロジェクトに取り組んでいます。私はパンチ時計プログラムを作成しているので、助けが必要な部分は、ユーザーが jTextField に uid を入力する場所です。そのため、uid(#######) を取得し、SQL ステートメントを使用してデータベース内でその uid を検索する必要があります。これが私がこれまでに持っているものです。問題は、jTextField1.getText の下に赤い線があり、いつ、いつ実行すると、次のように表示されるかということです =

"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

2 に答える 2

6

jTextField1.getText()parseIntint に変換するために使用される文字列を返します

pstmt.setInt(1, Integer.parseInt(jTextField1.getText()));
于 2012-06-13T06:17:07.323 に答える
5

ドキュメントからわかるように、このsetInt()メソッドは両方のパラメータを として受け取りますint

public void setInt(int parameterIndex,
                   int x)

したがって、これを変更する必要があります。

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

に:

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

getText()メソッドが String を返すためです。

于 2012-06-13T06:18:56.850 に答える