在java程序中一般日期用到的是java.util.Date类
而
接口 PreparedStatement
setDate
void setDate(int parameterIndex, Date x) throws SQLException
-
使用运行应用程序的虚拟机的默认时区将指定参数设置为给定
java.sql.Date
值。在将此值发送到数据库时,驱动程序将它转换成一个 SQLDATE
值。
可以看到是接受java.sql.Date
值,所以必须注意转换
package info.dyndns.oszc.Introduce;
import java.sql.*;
import java.util.*;
import com.mysql.jdbc.PreparedStatement;
public class DateTest {
public static void creat(String title, Date/*这个Date是java util 包*/release_date) throws Exception{
String url = "jdbc:mysql://localhost:3306/dvd_collection?characterEncoding=UTF-8";
//指定字符集 否则增加中文会乱码
String sql = "insert into movies (title,release_date) values(?,?)";
Connection conn =
JdbcUtils.conn(url, "oszc", "1234");
java.sql.PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, title);
ps.setDate(2, new java.sql.Date(release_date.getTime()));
//这里setData的参数是sql.Data类型,所以需要把util.date转换成sql.Data中
//sql.Data是util.Data的子类,子类不能直接转换成父类,只能通过sql.Date的构造函数
ps.executeUpdate();
JdbcUtils.closeDB(null, ps, conn);
}
public static void read() throws Exception{
String url = "jdbc:mysql://localhost:3306/dvd_collection?characterEncoding=UTF-8";
String sql = "select * from movies";
Connection conn =
JdbcUtils.conn(url, "oszc", "1234");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
while (rs.next()){
Date date = rs.getDate("release_date");
//java.sql.date 是java.util.data的子类
//子类可以赋值给父类
System.out.println(date);
}
JdbcUtils.closeDB(rs, st, conn);
}
public static void main(String[] args) throws Exception {
//creat("Dont lie to me", new Date());
read();
}
}