sos sos jdbc PreparedStatement 插入datetime类型(数据库 sql server 字段 ddate 是datetime

sossosjdbc PreparedStatement 插入datetime类型(数据库 sql server 字段 ddate 是datetime类型)String dd

sos sos jdbc PreparedStatement 插入datetime类型(数据库 sql server 字段 ddate 是datetime类型)
String ddate = vco.getDdate();//发布日期
jdbcTemplate.update(sql,  
  new PreparedStatementSetter() {  
  public void setValues(PreparedStatement ps) throws SQLException {
  //Date date = null;

  ps.setString(1, cbustype);
  ps.setString(2, "");
  ps.setInt(3, 71);
  ps.setString(4, "");
  ps.setString(5, cdlcode);
  ps.setString(6, "05");
  ps.setString(7, cstcode);
 
  //java.sql.Date date=java.sql.Date.valueOf(ddate);
  //ps.setString(8,"CONVERT(datetime,"+ddate+",103)");  
//ps.setDate(8,(java.sql.Date) ddd);
 

java.util.Date date;
try {
date = (java.util.Date) datef.parse(ddate);
Timestamp tt=new Timestamp(date.getTime());
System.out.println("ddddd"+date);
ps.setTimestamp(8,tt);
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
我在页面输入2007-11-12 15:11:0.000 插入的时候提示 从字符串转换为 datetime 时发生语法错误。
 换成这个

java.sql.Date date;
try {
date = (java.sql.Date) datef.parse(ddate);
Timestamp tt=new Timestamp(date.getTime());
System.out.println("ddddd"+date);
ps.setTimestamp(8,tt);
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
页面同样输入2007-11-12 15:11:0.000 插入的时候报[action]:java.lang.ClassCastException: java.util.Date
at com.together.sys.service.OperationServiceImpl$3.setValues(OperationServiceImpl.java:410)
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:707)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:490)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:703)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:767)
at com.together.sys.service.OperationServiceImpl.insertIvo(OperationServiceImpl.java:390)
at com.together.sys.action.InvcoAction.insert(InvcoAction.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
如何解决  


[解决办法]
stat.setDate() 方法需要java.sql.Date 才可以,java.util.Date 是不行的
你可以这样转一下

Java code
ps.setDate(8,new java.sql.Date(dateUtil.getTime()));
------解决方案--------------------


Java code
java.sql.Date   date; try   {   date   = new java.sql.Date(datef.parse(ddate).getTime);  // 如果parse不报异常,应该这样写  ps.setDate(8,date); }   catch   (ParseException   e)   {   //   TODO   自动生成   catch   块   e.printStackTrace(); }