一、步骤
1.获取Date实例,并通过getTime()方法获得毫秒数;
2.将获取的毫秒数存储到数据库中,注意存储类型为nvarchar(20);
3.读取数据库的毫秒数,作为Date构造方法的参数创建实例,有需要再转换时间格式。
二、代码示例
package com.yh.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.yh.util.ConfigManager;
public class NewsDao {
public static void main(String[] args) {
NewsDao nd = new NewsDao();
nd.addData(005, "洪旭", 21, new Date().getTime());
nd.getData();
}
// 查询数据
public void getData() {
Connection con = null;
ConfigManager configManager = ConfigManager.getInstance();
String url = configManager.getString("jdbc.connection.url");
String username = configManager.getString("jdbc.connection.username");
String password = configManager.getString("jdbc.connection.password");
String driver = configManager.getString("jdbc.SQLServerDriver.class");
try {
// 加载驱动
Class.forName(driver);
// 获得数据库连接
con = DriverManager.getConnection(url, username, password);
// 执行sql语句
String sql = "select * from student";
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
int age = rs.getInt(3);
long createDate = rs.getLong(4);
Date date = new Date(createDate);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(id + " " + name + " " + age + " " + sdf.format(date));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 插入数据
public void addData(int id, String name, int age, long createDate) {
Connection con = null;
ConfigManager configManager = ConfigManager.getInstance();
String url = configManager.getString("jdbc.connection.url");
String username = configManager.getString("jdbc.connection.username");
String password = configManager.getString("jdbc.connection.password");
String driver = configManager.getString("jdbc.SQLServerDriver.class");
try {
// 加载驱动
Class.forName(driver);
// 获得数据库连接
con = DriverManager.getConnection(url, username, password);
// 执行sql语句
String sql = "insert into student (id,name,age,createDate)values(?,?,?,?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, id);
ps.setString(2, name);
ps.setInt(3, age);
ps.setLong(4, createDate);
int line = ps.executeUpdate();
System.out.println("影响行数:" + line);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
// 释放资源
ps.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
三、Statement和PreparedStatement的比较
1.Statement由Connection类的createStatement()方法创建,用于发送相对简单,参数较少的sql语句;
2.PreparedStatement由Connection类的preparedStatement()方法创建,用于发送参数较多的sql语句;
3.sql语句使用 " ? " 作为数据占位符,使用set***(int index, 值)方法设置数据。