0

私は検索プログラムを実行しようとしています:フロントエンド-javaおよびバックエンド-mysql。

私は少し試しました、ここにコードがあります:

public static void searchRecord() throws SQLException{

    Scanner in = new Scanner(System.in);
    int empnum;

    System.out.print("Enter employee number: ");
    empnum = in.nextInt();

    String search = "SELECT fname FROM employees WHERE emp_num='"+ empnum + "'";
        resultSet = statement.executeQuery(search);

    String empnum_rs = null;    

    while(resultSet.next()){
        empnum_rs = resultSet.getString(empnum);



    }

     System.out.print(empnum_rs);   
}

ここで私が得た問題は、emp_num eclipseと入力すると、次の行がスローされることです。

Exception in thread "main" java.sql.SQLException: Column Index out of range, 2 > 1. 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkColumnBounds(ResultSetImpl.java:830)
    at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5773)
    at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5692)
    at Test.searchRecord(Test.java:55)
    at Test.main(Test.java:37)
4

1 に答える 1

1

getXXX...関数は、1 から n までの列番号を使用します。ここで、n はクエリで選択された列の最大数です。クエリで選択できる列は 1 つだけです。Andempnumは 1 に等しくない可能性があるため、エラーがスローされます。

変化する:

empnum_rs = resultSet.getString(empnum);

に:

empnum_rs = resultSet.getString( 1 );
于 2012-07-10T13:26:55.803 に答える