涉及到兩個(gè)類:java.util.Date,java.sql.Date(和數(shù)據(jù)庫(kù)編程有關(guān))。 其中java.sql.Date繼承自java.util.Date。兩者的區(qū)別是,前者既有日期又有時(shí)間,而后者僅有日期。 1.java.util.Date的常用構(gòu)造方法如下:利用SimpleDateFormat可以對(duì)Date進(jìn)行任意形式的格式化 ●new Date() ●new Date(long date) 通??梢赃@樣用:new java.util.Date(System.currentTimeMillis()) 2.java.sql.Date的常用構(gòu)造方法如下: ●new Date(long date) 通常可以這樣用:new java.util.Date(System.currentTimeMillis()) 三層架構(gòu)中,JDBC屬于數(shù)據(jù)訪問(wèn)層,專門用來(lái)處理數(shù)據(jù),為上一層代碼(業(yè)務(wù)邏輯層)提供服務(wù),而業(yè)務(wù)邏輯層一般不與SQL打交道,它不會(huì)用到j(luò)ava.sql.Date,而只會(huì)使用java.util.Date,所以這就涉及到j(luò)ava.util.Date與java.sql.Date類型的轉(zhuǎn)換。 需要說(shuō)明的是:java.sql.Time也繼承自java.util.Date. 現(xiàn)在以簡(jiǎn)單的代碼模擬上面所說(shuō)的轉(zhuǎn)換。 package cn.itcast.jdbc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DateTest { public static void main(String[] args) throws SQLException { Date d = read(7);//取得第七條記錄的生日 System.out.println(d); } static java.util.Date read(int id) throws SQLException {//讀取時(shí)間 Connection conn = null; Statement st = null; ResultSet rs = null; java.util.Date birthday = null; try { // 2.建立連接 conn = JdbcUtils.getConnection();//JdbcUtils為JDBC工具類 // 3.創(chuàng)建語(yǔ)句 st = conn.createStatement(); // 4.執(zhí)行語(yǔ)句 rs = st.executeQuery("select birthday from user where id=" + id); // 5.處理結(jié)果 while (rs.next()) { //birthday = new Date(rs.getDate("birthday").getTime()); birthday = rs.getDate("birthday");//兩種形式都可以,rs.getDate()返回的是java.sql.Date,子類可以直接賦值給父類 } } finally { JdbcUtils.free(rs, st, conn); } return birthday; } static void create(String name, java.util.Date birthday, float money) throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 2.建立連接 conn = JdbcUtils.getConnection(); // conn = JdbcUtilsSing.getInstance().getConnection(); // 3.創(chuàng)建語(yǔ)句 String sql = "insert into user(name,birthday, money) values (?, ?, ?) "; ps = conn.prepareStatement(sql); ps.setString(1, name); ps.setDate(2, new java.sql.Date(birthday.getTime()));//核心代碼,ps.setDate()所需要傳入的是java.sql.Date ps.setFloat(3, money); // 4.執(zhí)行語(yǔ)句 int i = ps.executeUpdate(); System.out.println("i=" + i); } finally { JdbcUtils.free(rs, ps, conn); } } } |
聯(lián)系客服