我在将一个日期类型插入到MYSQL中时出现下面错误
java.sql.BatchUpdateException: Data truncation: Incorrect datetime value: '1' for column 'odate' at row 1
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:648)
at com.shopping.dao.OrderDaoMySqlImpl.save(OrderDaoMySqlImpl.java:51)
at com.shopping.OrderMgr.save(OrderMgr.java:24)
at org.apache.jsp.order_jsp._jspService(order_jsp.java:76)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
at java.lang.Thread.run(Thread.java:674)
到底是为什么呀
java.sql.BatchUpdateException: Data truncation: Incorrect datetime value: '1' for column 'odate' at row 1
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:648)
at com.shopping.dao.OrderDaoMySqlImpl.save(OrderDaoMySqlImpl.java:51)
at com.shopping.OrderMgr.save(OrderMgr.java:24)
at org.apache.jsp.order_jsp._jspService(order_jsp.java:76)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
at java.lang.Thread.run(Thread.java:674)
到底是为什么呀
insert into atable (odate) values(str_to_date('07/23/2009', '%m/%d/%Y'))
public void save(SalesOrder so) {
String sql = "insert into salesorder values(null,?,?,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rsKey = null;
try {
conn = DB.getConn();
conn.setAutoCommit(false);
pstmt = DB.getPrepareStmt(conn, sql,true);
pstmt.setInt(1, so.getUser().getId());
pstmt.setString(2, so.getAddr());
System.out.println(so.getOdate());
pstmt.setTimestamp(3, new Timestamp(so.getOdate().getTime()));
//pstmt.setTimestamp(3, null);
pstmt.setInt(4, so.getStatus());
pstmt.executeUpdate();
rsKey = pstmt.getGeneratedKeys();
rsKey.next();
int key = rsKey.getInt(1);
String sqlRs = "insert into salesitem values(null,?,?,?,?)";
pstmt = DB.getPrepareStmt(conn, sql);
Cart cart = so.getCart();
List items = cart.getItems();
for(int i=0;i<items.size();i++){
CartItem ci = (CartItem)items.get(i);
pstmt.setInt(1, ci.getProduct().getId());
pstmt.setDouble(2, ci.getPrice());
pstmt.setInt(3, ci.getCount());
pstmt.setInt(4,key);
pstmt.addBatch();
//pstmt.executeUpdate();
}
pstmt.executeBatch();
conn.commit();
conn.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally {
DB.closeRs(rsKey);
DB.closeStmt(pstmt);
DB.closeConn(conn);
} }
我这样写应该没错哇
pstmt.setTimestamp(3, new java.sql.Date(so.getOdate().getTime()));