我正在编写一个从数据库中获取记录的程序。我想创建一个基于 3 个变量(学生 ID、名字和/或姓氏)的动态查询。这是我返回记录的java代码:
result = statement.executeQuery("SELECT * FROM student "
        + "WHERE (studentID = "
        + getStudentId() + " AND " + getStudentId() + " <> 0)"
        + " OR (firstName = '"
        + getFirstName() + "' AND '" + getFirstName() + "' IS NOT NULL)"
        + " OR (lastName = '"
        + getLastName() + "' AND '" + getLastName() + "' IS NOT NULL)");
我想要的是搜索根据存在的变量返回模糊到具体的结果。目前,如果 studentID 是唯一提供的字段,则返回该单条记录,或者如果 studentID 不存在但 firstName 存在,则返回按 firstName 的所有记录(如果仅存在变量,则 lastName 相同)。不起作用的是,如果我提供 firstName 和 lastName,它会返回所有带有 firstName 的记录,而不管记录的姓氏如何,以及带有 lastName 的所有记录,无论名字是什么。示例 firstName = "Bill" 和 lastName = "Jackson":
1  Bill Hader
2  Steve Jackson
3  Bill Jackson
4  Bill Stewart
5  Denise Jackson
6  Wendy Jackson
7  Bill Matthews
我想弄清楚的是,如果我提供特定的标准,例如名字和姓氏,如何获取包含指定的名字和姓氏的一个特定记录。