我在寫一個從數據庫中獲取記錄的程序。我想創建一個基於3個變量(studentID,firstName和/或lastname)的動態查詢。這裏是一個返回記錄我的Java代碼:帶有Java的動態SQL查詢
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 = 「比爾」 和lastName = 「傑克遜」:
1比爾·哈德 2史蒂夫傑克遜 3比爾傑克遜 4比爾斯圖爾特 5丹尼斯傑克遜 6溫迪傑克遜 7個比爾馬修斯
我我試圖弄清楚的是,如果我提供的具體條件,如firstName和lastName如何獲得包含指定的名字和姓氏的特定記錄。
首先,我建議您閱讀準備好的語句:http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – NPE 2013-03-13 11:48:12
當然,必須有'xkcd'引用(這看起來特別適合你的例子):http://xkcd.com/327/ – NPE 2013-03-13 11:49:18
你的敘述描述了一個需要條件邏輯的情況。但是,您的代碼中沒有任何內容。 – 2013-03-13 11:57:22