在使用 JDBC 访问数据库存储数据时,日期类型的数据必须是 java.sql.Date 的才能注入到 SQL 语句中。
因此这里是将字符串类型的日期转换成 java.util.Date,接着再转换成 java.sql.Date ,最后注入到 SQL 语句中。
public class ProjectDAO {
private static final String insert = "insert into t_project(no,name,start_date,end_date) values(?,?,?,?)";
public void add(Project project) {Connection con = null;PreparedStatement pstmt = null;con = ConnectionUtils.getConnection();try {pstmt = con.prepareStatement(insert);pstmt.setString(1, project.getNo());pstmt.setString(2, project.getName());SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// project获取到的是字符串类型的日期,需要转换成java.util.Date类型Date startDateUtil = sdf.parse(project.getStartDate());// java.util.Date类型的日期无法封装到SQL中,需要转换成java.sql.Date类型java.sql.Date startDate = new java.sql.Date(startDateUtil.getTime());Date endDateofUtil = sdf.parse(project.getEndDate());java.sql.Date endDate = new java.sql.Date(endDateofUtil.getTime());pstmt.setDate(3, startDate);pstmt.setDate(4, endDate);pstmt.execute();} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);} catch (ParseException e) {e.printStackTrace();throw new RuntimeException(e);} finally {ConnectionUtils.close(pstmt, con);}}}