JDBC入门十一:JDBC中的Date日期的处理方式;(包括读取和更新)(这是一个零散的知识点,较重要!)

本文主要是介绍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日期的处理方式;(包括读取和更新)(这是一个零散的知识点,较重要!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/322875

相关文章

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1