2 回答

TA貢獻1877條經驗 獲得超1個贊
PreparedStatement
除了 Safeer Ansari 的回答之外,我將舉例說明如何?PreparedStatement
在這種情況下使用它以及為什么它會有利。
對于LocalDateTime
參數,請使用PreparedStatement::setObject
.
和可以這樣重寫Statement
:String
Connection con = DBConnection.getConnection();
String query = "SELECT * FROM appointment WHERE start BETWEEN ? AND ? ;";
PreparedStatement statement = con.prepareStatement(query)
statement.setObject(1,ldt);
statement.setObject(2,ldt2);
ResultSet rs = statement.executeQuery();
請注意如何構建String query
語句不再需要任何String
串聯,而是使用?
as 位置來設置變量。使用動態查詢時使用PreparedStatement
over沒有任何缺點。Statement
注意:?我沒有包括任何關閉資源或exception
處理以保持示例簡單。使用try-with-resources來完成這項工作。

TA貢獻1804條經驗 獲得超3個贊
錯誤在您的查詢字符串中,因為ldt2之后沒有結束單引號
這是您的查詢的樣子:
String query = "SELECT * FROM appointment WHERE start BETWEEN '" + ldt + "' AND '" + ldt2 + "'";
此外,我建議將 String.format() 用于字符串格式化目的,而不是嘗試連接如此復雜的字符串。
我希望這能解決你的問題
添加回答
舉報