JDBC之日期问题

来源:互联网 发布:windows只能进安全模式 编辑:程序博客网 时间:2024/05/21 09:07

在Java中有两个日期类型(当然JDK8还新增java.time.LocalDate),一个是java.sql.Date,另一个是java.util.Date类,其中java.sql.Date类继承自java.util.Date类。同时需要注意的是,java.sql.Date只包含日期,而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;import java.util.Date;import org.junit.Test;/** * 测试java.util.Date和java.sql.Date */public class DateTest {/** * 该方法测试成功 * @throws SQLException */@Testpublic void testCreate() throws SQLException {/** * 注意这里传入的是java.util.Date */create("name2", new Date(), 500.0f);}/** * 该方法测试成功 * @throws SQLException */@Testpublic void testRead() throws SQLException {Date d = read(3);System.out.println(d);}/** * 通过id查询结果 * @param id * @return * @throws SQLException */static Date read(int id) throws SQLException {Connection conn = null;Statement st = null;ResultSet rs = null;Date birthday = null;try{conn = JdbcUtils.getConnection();st = conn.createStatement();rs = st.executeQuery("select birthday  from user where id=" + id);while(rs.next()) {//通过这种方式构造会输出时间//输出结果:Tue May 30 00:00:00 CST 2017birthday = new Date(rs.getDate("birthday").getTime());//注意:下面的方法返回的是java.sql.Date,但是java.sql.Date是继承//自java.util.Date,所以可以直接进行赋值操作,这样写输出日期//输出结果:2017-05-30//birthday = rs.getDate("birthday");}}finally {JdbcUtils.free(rs, st, conn);}return birthday;}/** * 执行插入操作 * @param name * @param birthday java.util.Date * @param money * @throws SQLException */static void create(String name, Date birthday, float money) throws SQLException {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try{conn = JdbcUtils.getConnection();String sql = "insert into user(name,birthday, money) values (?, ?, ?)";ps = conn.prepareStatement(sql);ps.setString(1, name);//这里将java.util.Date转换为java.sql.Date,//并且该方法接收参数是java.sql.Dateps.setDate(2, new java.sql.Date(birthday.getTime()));ps.setFloat(3, money);int i = ps.executeUpdate();//i表示的是影响的结果System.out.println("i=" + i);}finally{JdbcUtils.free(rs, ps, conn);}}}