一、步骤
1.获取Date实例,并通过getTime()方法获得毫秒数;
2.将获取的毫秒数存储到数据库中,注意存储类型为nvarchar(20);
3.读取数据库的毫秒数,作为Date构造方法的参数创建实例,有需要再转换时间格式。
二、代码示例
packagecom.yh.dao; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.PreparedStatement; importjava.sql.ResultSet; importjava.sql.SQLException; importjava.sql.Statement; importjava.text.SimpleDateFormat; importjava.util.Date; importcom.yh.util.ConfigManager; public classNewsDao { public static voidmain(String[] args) { NewsDao nd = newNewsDao(); nd.addData(005, "洪旭", 21, newDate().getTime()); nd.getData(); } //查询数据 public voidgetData() { 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 = newDate(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, longcreateDate) { 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, 值)方法设置数据。