网上商城 Incorrect datetime value: '' for column 'ordertime' at row 1
Posted y-song
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网上商城 Incorrect datetime value: '' for column 'ordertime' at row 1相关的知识,希望对你有一定的参考价值。
今天在做商城项目的【提交订单】功能的时候,向数据库插入数据报错:Incorrect datetime value: ‘‘ for column ‘ordertime‘ at row 1
public void addOrders(Order order) throws SQLException { QueryRunner runner = new QueryRunner(); String sql = "insert into orders values(?,?,?,?,?,?,?,?)"; Connection conn = DataSourceUtils.getConnection(); runner.update(conn,sql, order.getOid(),order.getOrdertime(),order.getTotal(),order.getState(), order.getAddress(),order.getName(),order.getTelephone(),order.getUser().getUid()); }
检查了sql语句,问号与value个数相同,没问题。
value的依次顺序与数据库也一样,没问题。
看到报错信息里有datetime,个人感觉是插入的数据与数据库类型产生了冲突,
然后就百度了下,看到一篇文章https://blog.csdn.net/qq_34734520/article/details/51882925
里面有这么一句:对ordertime使用SimpleDateFormat进行转换,转换成和数据库一致的格式:yyyy-MM-dd hh:mm:ss
接着检查我的Servlet里面有一句代码是:
order.setOrdertime(new Date);
这里的日期没有进行格式化,想着是不是要格式化一下日期才行
最后利用SimpleDateFormat格式化日期后
运行不报错了,数据也插进去了,完美解决问题!!!
PS:给自己提个醒,这里的insert into语法是insert into 表名(字段1,字段2,字段3........) values(value1,value2 value3.....) ; 一定要一一对应,
如果前面不加字段名,value个数最好跟数据库里面字段个数一样,顺序对应,否则会报空指针异常。
以上是关于网上商城 Incorrect datetime value: '' for column 'ordertime' at row 1的主要内容,如果未能解决你的问题,请参考以下文章
记录一次mysql时间插入错误(Data truncation: Incorrect datetime value)
Navicat 导入数据时报Incorrect datetime value: '0000-00-00 00:00:00.000000' 错误
ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - Data truncation: Incorrect datetime value
mysql 插入中文报错: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value...
Mysql 升级到 5.6 后插入语句时间字段报错:Incorrect datetime value: '' for column 'createtime'
在用mybatis向MySQL数据库中插入时间时报错:Incorrect datetime value: '' for column '' at row 1