日期:2014-05-16  浏览次数:20349 次

JDBC与MySQL数据库日期类型的转换


     在JDBC连接数据的过程中,我们时常会遇到一些关于数据类型方面的问题,例如,假设birthday是封装在Person对象中的一个Date类型的属性,在执行向数据库中插入数据的命令:“insert intousers (id,name,sex,age,birthday) values(?,?,?,?,?);”我们接下来要做的就是为这其中每一个占位符赋值,我们用预处理语句

            PreparedStatementps = null;

           ps.setInt(1, m.getId());

                     ps.setString(2,m.getName());

                     ps.setString(3,m.getSex());

                     ps.setInt(4,m.getAge());

这样我们就完成了对于前四位占位符的赋值操作,那么,我们如何为具有特殊类型的占位符birthday赋值呢?

     由于在MySQL数据库中,birthday字段的类型是Date类型的,所以,我们在保证数据类型的一致性问题上就得进行考虑,否则就会导致程序出错,数据不能添加到数据库中。

   这里,介绍两种保险的赋值方式:

情况1、

    将Person类中birthday的类型定义为String类型,这样我们只需在设置birthday字段的占位符的值时,只需将其设置为ps.setString(5,m.getBirthday());即可。

 

情况2、

    在为Person中birthday属性设置类型时将其强制设置为j ava.sql.Datebirtthday即可。

这样我们在为birthday字段的占位符的值时,只需将其设置为ps.setString(5, java.sql.Date.valueOf("1991-10-13"));即可因为在java.sql.Date中的valueOf()方法可以将 JDBC 日期转义形式的表示 "yyyy-mm-dd" 形式的日期的字符串转换成 Date 值。

 

这样,我们就不会出现由于数据类型不一致导致的数据无法插入到数据库中的问题了。