一、步驟
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 + "\t" + name + "\t" + age + "\t" + 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, 值)方法設置數據。