您的位置:首页 > 编程语言 > Java开发

JDBC之日期问题

2017-07-05 22:00 295 查看
在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
*/
@Test
public void testCreate() throws SQLException {
/**
* 注意这里传入的是java.util.Date
*/
create("name2", new Date(), 500.0f);
}

/**
* 该方法测试成功
* @throws SQLException
*/
@Test
public 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 2017
birthday = 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.Date
ps.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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息