Java 如何处理DBUtil中的日期类型值
我在DBUtil文件中设置发送查询的值,但是有两个值:start、end-是HTML5表单和MySQL数据库中的日期类型值。设置时如何在DBUtil文件中处理它们Java 如何处理DBUtil中的日期类型值,java,mysql,servlets,jdbc,compiler-errors,Java,Mysql,Servlets,Jdbc,Compiler Errors,我在DBUtil文件中设置发送查询的值,但是有两个值:start、end-是HTML5表单和MySQL数据库中的日期类型值。设置时如何在DBUtil文件中处理它们 myStmt.setInt(1, theBook.getNumber()); myStmt.setInt(2, theBook.getPhone()); myStmt.setDate(3, theBook.getStart()); myStmt.setDate(4, theBook.getEnd()); myStmt.setStrin
myStmt.setInt(1, theBook.getNumber());
myStmt.setInt(2, theBook.getPhone());
myStmt.setDate(3, theBook.getStart());
myStmt.setDate(4, theBook.getEnd());
myStmt.setString(5, theBook.getName());
在我的Java类中,DBUtil和Servlet导入了Java.util.Date。如果我使用myStmt.setDate(X,value)(如上面的示例所示),我会遇到一个错误:java.util.date无法转换为java.sql.date您需要使用:
如果您使用的是Java8+和Jdbc 4.x,那么您可以与
setObject
一起使用,而不是java.util.Date
,您也可以使用LocalDateTime
和您的区域Id,如下所示:
LocalDateTime startDate = ...
LocalDateTime endDate = ...
myStmt.setObject(4, startDate);
myStmt.setObject(5, endDate);
如果您坚持使用Java 7或更低版本,您可以看到以下链接:
java.util.Date
,当然,您可以只导入java.sql.Date
。我在我的Class.java ServletController.java中导入java.util.Date,在我的DBUtil中也导入ATM。因此,如果我导入它们(java.util)并使用语法:myStmt.setDate(3,new java.sql.Date(theBook.getStart().getTime());可以吗?我是否为该语法输入了ti import java.sql.Date,或者没有必要这样做?:)@Luke_Nuke如果使用完全限定类名(java.sql.Date
),则不需要导入它。仅供参考,麻烦的旧java.util.Date
和java.sql.Date
类现在是遗留类。多年前被java.time类取代。具体来说,Instant
和LocalDate
。
LocalDateTime startDate = ...
LocalDateTime endDate = ...
myStmt.setObject(4, startDate);
myStmt.setObject(5, endDate);