2012-07-10 30 views
0

我试图做一个搜索程序:前端 - java和后端 - mysql。mySql-java简单的搜索控制台应用程序

我试着一点点,下面的代码:

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日食抛出这些行:

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) 

回答

2

getXXX...函数的列号从1开始到n,其中n是查询中选择的最大列数。您的查询只有一列被选中。而empnum可能不等于1,因此会引发错误。

变化:

empnum_rs = resultSet.getString(empnum); 

到:

empnum_rs = resultSet.getString(1); 
+0

哦感谢队友!我应该为我的emp_num放置列。再次感谢 – 2012-07-10 13:29:20

+0

您可以在'get ...'方法中使用coumn编号或列名称。 – 2012-07-10 13:30:32

+0

但是当我添加lname列时,它只显示fname。我如何连接姓氏? – 2012-07-10 13:30:38

相关问题