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中文网其他相关文章!