涉及知识点:
1。SQL server 中 datetime 对应 java 中的 timeStamp 类型
PreparedStatement | CallableStatement 中的setDate()方法参数为 java.sql.Date类型.
2。java.util.Date 与 java.sql.Date 这间的转换
3。用字符串生在java.util.Date 类型
出现此问题的原因:
SQL server 库中用到日期(datetime)。
因而代码中出现
usersetU_Birthday(这里需要一个java.sql.Date类型的参数);
还有在调用存储过程时。也需要输入一个 java.sql.Date 类型的参数。所以就用了 cs.setDate();方法。
这两处都java.sql.Date 类型参数。
错误想法:
因java中常用java.util.Date ,本人以为这就涉及到了 java.util.Date 向 java.sql.Date 的转换了。
其实:
SQL server 中 datetime 对应 java 中的 timeStamp 类型
java.util.Date 转成 java.sql.Date
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date bday;
try {
bday = dateFormat.parse("1933-01-04 10:10:10");
Date birthday = new Date(bday.getTime());
u.setU_Birthday(birthday);
} catch (ParseException e) {
e.printStackTrace();
}
而用 Timestamp 可以这样实现:
u.setU_Birthday(Timestamp.valueOf("1933-01-04 10:10:10"));
String >>>>>>>>java.util.Date
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date bday = dateFormat.parse("1933-01-04 10:10:10");