本文主要是介绍JDBC入门十一:JDBC中的Date日期的处理方式;(包括读取和更新)(这是一个零散的知识点,较重要!),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本篇博客的代码沿用上篇博客JDBC入门十:基于JavaBean实体类,实现分页数据封装;中的代码;
一.数据库中日期类型说明:
(1)MySQL中date和datetime类型是可兼容的;(2)java程序给数据库的日期字段赋值的时候,只有setDate()方法,而没有setDateTime()方法;
二:从数据库中读取日期数据
1.首先,在JavaBean:Employee类中,添加日期属性hiredate:类型是java.util.Date
2.然后,在PaginationCommand类中添加:数据库中获取的日期类型是java.sql.Date
同时,在employee属性赋值的时候:
这是因为:java.sql包下的Date类型,继承自,java.util包下的Date类型:所以,在进行数据提取的时候,这两者是互相兼容的;
上面读取的过程,实际是把从数据库读到的java.sql.Date类型,赋值给java.util.Date类型;因为java.sql.Date类型继承自java.util.Date类型,所以这个是没有问题的。
三: 向数据库中添加日期数据
那么再向数据库表中更新数据的时候,怎么处理?
比如从前端传过来一个日期变量,大概率是String字符串,这个日期字符串如何存储到数据库中?
InsertCommand类:
package com.imooc.jdbc.hrapp.command;import com.imooc.jdbc.common.DbUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;public class InsertCommand implements Command{@Overridepublic void execute() {Scanner in = new Scanner(System.in);System.out.println("请输入员工编号:");int eno = in.nextInt();System.out.println("请输入员工姓名");String ename = in.next();System.out.println("请输入员工薪资:");Float salary = in.nextFloat();System.out.println("请输入隶属部门:");String dname = in.next();System.out.println("请输入入职日期:");String strHiredate = in.next();// String类型到java.sql.Date,分两步//1.String转为java.util.Date;java.util.Date udHiredate = null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {udHiredate = sdf.parse(strHiredate);} catch (ParseException e) {e.printStackTrace();}//2.将java.util.Date转为java.sql.Date;Long time = udHiredate.getTime();//getTime()方法是获取从1970年到现在的毫秒数;java.sql.Date sdHiredate = new java.sql.Date(time);//java.sql.Date支持在构造函数中传入一个1970年的毫秒数的;Connection conn = null;PreparedStatement pstmt = null;try {conn = DbUtils.getConnection();String sql = "insert into employee(eno,ename,salary,dname,hiredate) values(?,?,?,?,?)";pstmt = conn.prepareStatement(sql);pstmt.setInt(1,eno);pstmt.setString(2,ename);pstmt.setFloat(3, salary);pstmt.setString(4, dname);pstmt.setDate(5,sdHiredate); // java.sql.Dateint cnt = pstmt.executeUpdate();System.out.println(cnt);System.out.println(dname+"员工入职手续已办理。");} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {DbUtils.closeConnection(null, pstmt, conn);}}
}
核心就是:先把日期字符串转成java.util.Date格式;然后获得时期的毫秒数;然后把毫秒数转成java.sql.Date格式。
这篇关于JDBC入门十一:JDBC中的Date日期的处理方式;(包括读取和更新)(这是一个零散的知识点,较重要!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!