涉及到两个类:java.util.Date,java.sql.Date(和数据库编程有关)。
其中java.sql.Date继承自java.util.Date。两者的区别是,前者既有日期又有时间,而后者仅有日期。 1.java.util.Date的常用构造方法如下:利用SimpleDateFormat可以对Date进行任意形式的格式化 ●new Date() ●new Date(long date) 通常可以这样用:new java.util.Date(System.currentTimeMillis()) 2.java.sql.Date的常用构造方法如下: ●new Date(long date) 通常可以这样用:new java.util.Date(System.currentTimeMillis()) 三层架构中,JDBC属于数据访问层,专门用来处理数据,为上一层代码(业务逻辑层)提供服务,而业务逻辑层一般不与SQL打交道,它不会用到java.sql.Date,而只会使用java.util.Date,所以这就涉及到java.util.Date与java.sql.Date类型的转换。 需要说明的是:java.sql.Time也继承自java.util.Date. 现在以简单的代码模拟上面所说的转换。 package cn.itcast.jdbc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DateTest { public static void main(String[] args) throws SQLException { Date d = read(7);//取得第七条记录的生日 System.out.println(d); } static java.util.Date read(int id) throws SQLException {//读取时间 Connection conn = null; Statement st = null; ResultSet rs = null; java.util.Date birthday = null; try { // 2.建立连接 conn = JdbcUtils.getConnection();//JdbcUtils为JDBC工具类 // 3.创建语句 st = conn.createStatement(); // 4.执行语句 rs = st.executeQuery("select birthday from user where id=" + id); // 5.处理结果 while (rs.next()) { //birthday = new Date(rs.getDate("birthday").getTime()); birthday = rs.getDate("birthday");//两种形式都可以,rs.getDate()返回的是java.sql.Date,子类可以直接赋值给父类 } } finally { JdbcUtils.free(rs, st, conn); } return birthday; } static void create(String name, java.util.Date birthday, float money) throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 2.建立连接 conn = JdbcUtils.getConnection(); // conn = JdbcUtilsSing.getInstance().getConnection(); // 3.创建语句 String sql = "insert into user(name,birthday, money) values (?, ?, ?) "; ps = conn.prepareStatement(sql); ps.setString(1, name); ps.setDate(2, new java.sql.Date(birthday.getTime()));//核心代码,ps.setDate()所需要传入的是java.sql.Date ps.setFloat(3, money); // 4.执行语句 int i = ps.executeUpdate(); System.out.println("i=" + i); } finally { JdbcUtils.free(rs, ps, conn); } } } |