我向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都出错,不知什么原因了,实在想不出,请大家给看看。

解决方案 »

  1.   

    pStat.setString(4, hm.format(new Date())); 
    -->
    pStat.setTimestamp(4, new Date()); 注意:Date 是java.sql.Date
      

  2.   

    new Date()
    应该是 new Timestamp()
      

  3.   

    pStat.setString(4, hm.format(new Date())); 
    --> 
    pStat.setTimestamp(4, Timestamp.valueOf(hm.format(new Date()))); 
      

  4.   

    pStat.setTimestamp(4, hm.format(Calendar.getInstance().getTime())); 
      

  5.   

    我觉得楼上的正解:
    pStat.setTimestamp(4, new timestape()); public class Timestamp extends Date 
    它允许 JDBC 把该类作为 SQL TIMESTAMP 值识别。 它添加了用以维持 SQL TIMESTAMP 纳秒值的能力并提供格式化和分析操作以支持用于 timestamp 值的 JDBC 换码语法。
      

  6.   

    谢谢大家,我自己找到答案了,原来是SimpleDateFormat hm = new SimpleDateFormat("yy-mm-dd hh:mm:ss"); 这句话有问题,mm月份,应该为大写,所以出现不能转换字符的问题,还是谢谢大家了,祝天天快乐。
      

  7.   

    是日期型的datetime类型,这样插入通过了,我试了两边,都可以的