我是编程新手,我正在尝试做简单的项目来了解更多信息。我已经完成了研究,但我似乎无法找到解决问题的方法。也许,我的程序结构不合理,但在这里:
如果已输入的员工ID已存在于数据库中,此块将有效。这是在服务器中
public boolean login(String employeeID) throws SQLException {
String sql = "select count(*) as count from employees where emp_id=?";
statement = connection.prepareStatement(sql);
statement.setString(1, employeeID);
rs = statement.executeQuery();
if (rs.next()) {
count = rs.getInt("count");
}
rs.close();
if (count == 0) {
return false;
} else {
return true;
}
}
/* METHOD BELOW ITERATES THE FIELDS FROM MYSQL DATABASE, BUT IT DISPLAYS ALL OF IT.
I JUST WANT TO GET A SINGLE ROW MATCHING THE EMPLOYEE ID PARAMETER ENTERED.*/
public List<EmployeeNumber> _list() throws SQLException {
List<EmployeeNumber> result = new ArrayList<>();
String sql = "select * from employees";
statement = connection.prepareStatement(sql);
rs = statement.executeQuery();
if (rs.next()) {
EmployeeNumber emp = new EmployeeNumber();
emp.setEmployeeNumber(rs.getString(1));
emp.setFirstName(rs.getString(2));
emp.setLastName(rs.getString(3));
emp.setEmail(rs.getString(4));
emp.setDepartment(rs.getString(5));
emp.setFirstApprover(rs.getString(6));
emp.setSecondApprover(rs.getString(7));
result.add(emp);
}
if (rs != null) {
rs.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
return result;
}
}
我认为它与我的SQL查询语句有关,但我无法弄清楚如何修复它。
简而言之,当我从JSP页面提交员工ID时,它将验证是否存在,如果存在,我想显示该员工ID所在的同一行中的所有列字段。我怎么做?结果将显示在另一个JSP页面上。
谢谢。
答案 0 :(得分:1)
您首先要计算有多少员工拥有指定的ID。然后,您从employee表中选择 all 行。
跳过第一个查询,只使用第二个查询,但通过添加where子句,就像使用第一个查询一样:
select * from employees where emp_id=?
然后在绑定参数后(就像您对第一个查询所做的那样),测试是否返回了一行:
if (rs.next()) {
// get the data, and return an EmployeeNumber instance containing the data
}
else {
// no employee with the given ID exists: return null
}
请注意,该方法不应返回List<EmployeeNumber>
,而应返回EmployeeNumber
,因为您只想从表中获得1名员工。
答案 1 :(得分:0)
也许尝试这样的事情?
String sql = "select count(*) as count from employees where emp_id=?";
statement = connection.prepareStatement(sql);
statement.setString(1, employeeID);
int count = statement.ExecuteScalar();
if (count == 0) {
return false;
} else {
return true;
}
}
您还可以设置断点并逐步执行代码,并查看抛出异常的位置。这对我们有所帮助,知道异常消息以及异常消息。