向sql数据库中插入时间出错,请大家帮忙!

ya1li2shan3da4zhu 2009-07-29 11:49:51
我向sql中插入数据后出现如下错误:
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。

以下是代码片段:

public static void main(String[] args) {
// TODO Auto-generated method stub
Connection con= null;
PreparedStatement pStat = null;

SimpleDateFormat hm = new SimpleDateFormat("yy-mm-dd hh:mm:ss");
con=ConnectionManager.getConnection();
String sql = "insert into FirstLevelTitle values(?,?,?,?)";
try {
pStat = con.prepareStatement(sql);
pStat.setInt(1, 7);
pStat.setString(2, "智慧");
pStat.setString(3, "指挥者");
pStat.setString(4, hm.format(new Date()));
pStat.executeUpdate();
System.out.println("插入成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ConnectionManager.closePstat(pStat);
ConnectionManager.closeConnection(con);
}
}

pStat.setString(4,hm.format(new Date()));这句话错误,试过setChar,setDate都出错,不知什么原因了,实在想不出,请大家给看看。
...全文
245 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ya1li2shan3da4zhu 2009-07-29
  • 打赏
  • 举报
回复
这个Date的包是用的util的
ya1li2shan3da4zhu 2009-07-29
  • 打赏
  • 举报
回复
是日期型的datetime类型,这样插入通过了,我试了两边,都可以的
化外之民 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ya1li2shan3da4zhu 的回复:]
谢谢大家,我自己找到答案了,原来是SimpleDateFormat hm = new SimpleDateFormat("yy-mm-dd hh:mm:ss"); 这句话有问题,mm月份,应该为大写,所以出现不能转换字符的问题,还是谢谢大家了,祝天天快乐。
[/Quote]

看那错误,数据库中的字段类型应该是日期型啊,你这么写也行?
Miracle1216 2009-07-29
  • 打赏
  • 举报
回复
楼主多试试楼上的。
ya1li2shan3da4zhu 2009-07-29
  • 打赏
  • 举报
回复
谢谢大家,我自己找到答案了,原来是SimpleDateFormat hm = new SimpleDateFormat("yy-mm-dd hh:mm:ss"); 这句话有问题,mm月份,应该为大写,所以出现不能转换字符的问题,还是谢谢大家了,祝天天快乐。
dxl3813132 2009-07-29
  • 打赏
  • 举报
回复
我觉得楼上的正解:
pStat.setTimestamp(4, new timestape());

public class Timestamp extends Date
它允许 JDBC 把该类作为 SQL TIMESTAMP 值识别。 它添加了用以维持 SQL TIMESTAMP 纳秒值的能力并提供格式化和分析操作以支持用于 timestamp 值的 JDBC 换码语法。

kakagui 2009-07-29
  • 打赏
  • 举报
回复
pStat.setTimestamp(4, hm.format(Calendar.getInstance().getTime()));
化外之民 2009-07-29
  • 打赏
  • 举报
回复
pStat.setString(4, hm.format(new Date()));
-->
pStat.setTimestamp(4, Timestamp.valueOf(hm.format(new Date())));
化外之民 2009-07-29
  • 打赏
  • 举报
回复
new Date()
应该是 new Timestamp()
化外之民 2009-07-29
  • 打赏
  • 举报
回复
pStat.setString(4, hm.format(new Date()));
-->
pStat.setTimestamp(4, new Date());

注意:Date 是java.sql.Date

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧