网上商城 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