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

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺