在进行日期类型的操作时,会出现两个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());
时间: 2024-11-01 23:09:17