首頁 > 資料庫 > mysql教程 > 如何在PreparedStatements中正確使用setDate()以避免IllegalArgumentException?

如何在PreparedStatements中正確使用setDate()以避免IllegalArgumentException?

Linda Hamilton
發布: 2025-01-18 22:37:10
原創
167 人瀏覽過

How to Properly Use setDate() in PreparedStatements to Avoid IllegalArgumentException?

在準備好的語句中避免使用 IllegalArgumentExceptionsetDate()

從硬編碼的 SQL 查詢遷移到參數化的準備語句可以提高程式碼的可維護性和安全性。 然而,使用 setDate() 有時會導致 IllegalArgumentException。本指南示範了使用 java.sql.Datejava.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 欄位

如果您的資料庫列的類型為 TIMESTAMPDATETIME,請使用 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板