【发布时间】:2021-08-19 08:57:47
【问题描述】:
我想通过输入到文本字段中的 ID 来查找用户,如果找不到 ID,我想显示“未找到用户”。
这是我目前所拥有的,但只有在输入的文本字段大于表格中的 MAX id 时才会显示错误:
Statement stmt7 = connection.createStatement();
String query2 = "SELECT MAX(empid) AS MaxId FROM employee";
ResultSet rs2 = stmt7.executeQuery(query2);
while(rs2.next())
{
if(Integer.parseInt(searchEmployeeFld.getText()) > rs2.getInt("MaxId"))
{
// create a alert
Alert a = new Alert(AlertType.NONE);
// set alert type
a.setAlertType(AlertType.ERROR);
// set content text
a.setContentText("User Not Found");
// show the dialog
a.show();
}
else
{
Statement stmt6 = connection.createStatement();
System.out.println("Executing a Query...");
String query = "SELECT empname, empgrsal "
+ "FROM employee WHERE empid = " + searchEmployeeFld.getText();
ResultSet rs1 = stmt6.executeQuery(query);
while(rs1.next())
{
NameFld.setText(rs1.getString("empname"));
String test1 = Double.toString(rs1.getDouble("empgrsal"));
grossSalaryFld.setText(test1);
// calculate net salary
double grossSal = rs1.getDouble("empgrsal");
grossSal -= (grossSal * 0.3);
String test2 = Double.toString(grossSal);
netSalaryFld.setText(test2);
}
rs1.close();
}
}
rs2.close();
【问题讨论】:
-
请了解准备好的语句和参数化查询。当您将字符串值连接到查询字符串中时,您的代码容易受到 SQL 注入的影响。至于您的问题:您应该查询数据库中是否存在具有指定ID的记录(或者如果您有合适的约束,只需尝试插入并处理主键约束违规)。
-
为什么要先执行一个查询来找到最大的id?只需执行第二个查询并处理它没有返回任何行的情况。
-
这能回答你的问题吗? Fastest way to determine if record exists