如何在PreparedStatements中正確使用setDate()以避免IllegalArgumentException?
Jan 18, 2025 pm 10:36 PMPreparedStatement 的 setDate() 方法:防止錯誤的最佳實踐
遷移到準備好的語句可以提高程式碼一致性,但使用 setDate()
有時會導致 IllegalArgumentException
錯誤。 讓我們來看看如何避免這些問題。
考慮這個有問題的程式碼片段:
DateFormat dateFormatYMD = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); DateFormat dateFormatMDY = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); Date now = new Date(); String vDateYMD = dateFormatYMD.format(now); String vDateMDY = dateFormatMDY.format(now); String vDateMDYSQL = vDateMDY ; java.sql.Date date = new java.sql.Date(0000-00-00); //Incorrect date initialization requestSQL = "INSERT INTO CREDIT_REQ_TITLE_ORDER (REQUEST_ID," + " ORDER_DT, FOLLOWUP_DT) " + "values(?,?,?,)"; prs = conn.prepareStatement(requestSQL); prs.setInt(1,new Integer(requestID)); prs.setDate(2,date.valueOf(vDateMDYSQL)); prs.setDate(3,date.valueOf(sqlFollowupDT));
登入後複製
IllegalArgumentException
可能源自於日期處理不當。 避免將 date.valueOf()
與格式不一致的字串和不正確的日期初始化一起使用。
使用 java.sql.Date
和 java.sql.Timestamp
以下是如何針對不同的資料庫列類型正確使用 setDate()
和 setTimestamp()
:
對於日期欄位:
-
使用字串:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
(確保「YYYY-MM-DD」格式) -
使用 java.util.Date:
ps.setDate(2, new java.sql.Date(endDate.getTime()));
-
使用目前日期:
ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
對於 TIMESTAMP 或 DATETIME 欄位:
-
使用字串:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
(確保「YYYY-MM-DD HH:mm:ss」格式) -
使用 java.util.Date:
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
-
使用當前時間戳記:
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
透過遵循這些最佳實踐並使用適當的資料類型和格式,您可以在準備好的語句中可靠地使用 setDate()
和 setTimestamp()
,防止 IllegalArgumentException
錯誤並確保資料完整性。 請記住始終將日期/時間字串格式與資料庫的期望相符。
以上是如何在PreparedStatements中正確使用setDate()以避免IllegalArgumentException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器)
