データベースからレコードを取得するプログラムを作成しています。3 つの変数 (studentID、firstName、および/または lastname) に基づいて動的クエリを作成したいと考えています。レコードを返す私の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
私が把握しようとしているのは、firstName や lastName などの特定の条件を指定して、指定された名と姓の両方を含む特定のレコードを取得する方法です。