IllegalArgumentException
和 setDate()
從硬編碼的 SQL 查詢遷移到參數化的準備語句可以提高程式碼的可維護性和安全性。 然而,使用 setDate()
有時會導致 IllegalArgumentException
。本指南示範了使用 java.sql.Date
和 java.sql.Timestamp
的解決方案。
處理日期欄位
對於DATE
類型的資料庫列,使用以下方法正確設定日期參數:
使用字串: 提供「yyyy-MM-dd」格式的日期字串:
<code class="language-java"> ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));</code>
使用 java.util.Date: 轉換 java.util.Date
物件:
<code class="language-java"> java.util.Date endDate = ...; // Your java.util.Date object ps.setDate(2, new java.sql.Date(endDate.getTime()));</code>
設定目前日期:插入目前日期:
<code class="language-java"> ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));</code>
處理 TIMESTAMP 或 DATETIME 欄位
如果您的資料庫列的類型為 TIMESTAMP
或 DATETIME
,請使用 setTimestamp()
和以下選項:
使用字串: 以 'yyyy-MM-dd HH:mm:ss[.f...]' 格式提供日期和時間字串:
<code class="language-java"> ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));</code>
使用 java.util.Date: 轉換 java.util.Date
物件:
<code class="language-java"> java.util.Date endDate = ...; // Your java.util.Date object ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));</code>
設定目前時間戳記:插入目前時間戳記:
<code class="language-java"> ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));</code>
遵循這些準則,您可以在準備好的語句中可靠地設定日期和時間戳記參數,避免 IllegalArgumentException
。 請記住根據資料庫列的資料類型選擇適當的方法(setDate()
或 setTimestamp()
)。
以上是如何在PreparedStatements中正確使用setDate()以避免IllegalArgumentException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!