兼容我如何可以插入日期類型到數據庫?我應該把它聲明爲一個字符串嗎?
不 - 你應該避免連字符串轉換你目前有。您不應該像這樣動態構建您的SQL - 這是SQL注入攻擊,難以閱讀的代碼和轉換失敗的祕訣。
相反,使用PreparedStatement
,並設置使用setDate
參數:
// TODO: Closing the statement cleanly in a finally block or try-with-resources
PreparedStatement pst = conn.prepareStatement("INSERT INTO db (day) Values (?)");
pst.setDate(1, new java.sql.Date(d.getTime()));
pst.executeUpdate();
注意java.sql.Date
是java.util.Date
一個子類,但他們有些不同。我從來不清楚哪一個時區用於將給定時刻轉換爲真實日期 - 而且文檔不夠有用。在我看來,它被設計打破了,但這是另一回事。您可以使用另一個setDate
超載,該超載接受Calendar
- 用於時區。這仍然是可怕的不清楚,但希望你能得到你想要的結果。
參數值。 –