分享

JDBC中的数据类型与日期问题

 韦薇薇 2012-05-18

JDBC中的数据类型与日期问题

分类: J2SE 23人阅读 评论(0) 收藏 举报

涉及到两个类:java.util.Date,java.sql.Date(和数据库编程有关)。
其中java.sql.Date继承自java.util.Date。两者的区别是,前者既有日期又有时间,而后者仅有日期。
1.java.util.Date的常用构造方法如下:利用SimpleDateFormat可以对Date进行任意形式的格式化
●new Date()
●new Date(long date)  通常可以这样用:new java.util.Date(System.currentTimeMillis())
2.java.sql.Date的常用构造方法如下:
●new Date(long date)  通常可以这样用:new java.util.Date(System.currentTimeMillis())

三层架构中,JDBC属于数据访问层,专门用来处理数据,为上一层代码(业务逻辑层)提供服务,而业务逻辑层一般不与SQL打交道,它不会用到java.sql.Date,而只会使用java.util.Date,所以这就涉及到java.util.Date与java.sql.Date类型的转换。
需要说明的是:java.sql.Time也继承自java.util.Date.

现在以简单的代码模拟上面所说的转换。
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 {//读取时间
  Connection conn = null;
  Statement st = null;
  ResultSet rs = null;
  java.util.Date birthday = null;
  try {
   // 2.建立连接
   conn = JdbcUtils.getConnection();//JdbcUtils为JDBC工具类
   
   // 3.创建语句
   st = conn.createStatement();
   // 4.执行语句
   rs = st.executeQuery("select birthday  from user where id=" + id);
   // 5.处理结果
   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.创建语句
   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.执行语句
   int i = ps.executeUpdate();
   System.out.println("i=" + i);
  } finally {
   JdbcUtils.free(rs, ps, conn);
  }
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多