JDBC学习笔记(7):数据类型与日期问题

在进行日期类型的操作时,会出现两个Date,来自java.util.Date和java.sql.Date包,java.util.Date是java.sql.Date的super类。

demo:
 1 package com.xxyh.jdbc;
 2 import java.sql.Connection;
 3 import java.sql.PreparedStatement;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 import java.util.Date;
 7 public class DateTest {
 8     
 9     public static void main(String[] args) throws SQLException {
10         create("qianqi",new Date(),500);
11     }
12     
13     public static void create(String name, Date birthday, float money) throws SQLException {
14         Connection conn = null;
15         PreparedStatement ps = null;
16         ResultSet rs = null;
17         
18         try {
19             conn = JdbcUtils.getConnection();
20             String sql = "insert into user(name,birthday,money) values(?,?,?)";
21             ps = conn.prepareStatement(sql);
22             ps.setString(1, name);
23             
24             //ps.setDate(2, (java.sql.Date) birthday);//---------1
25             //ps.setDate(2, new java.sql.Date(birthday.getTime()));//---------2
26             ps.setFloat(3, money);
27             
28             int i =ps.executeUpdate();
29             System.out.println("i==="+i);
30         } finally {
31             JdbcUtils.close(rs, ps, conn);
32         }
33     }
34 }
当使用方式1进行强制转换时会报出异常:
Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
    at com.xxyh.jdbc.DateTest.create(DateTest.java:26)
    at com.xxyh.jdbc.DateTest.main(DateTest.java:12)
 
创意一个样例,发现java.sql.Date与java.util.Date参数不同,java.sql.Date没有时分秒:
技术分享
 
通过查看API,找到方式2,首先获取毫秒数再构造成java.sql.Date形式,将java.util.Date转换成java.sql.Date的方式如下:
new java.sql.Date(new java.util.Date().getTime());

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。