报错:Column count doesn't match value count at row 1

这个报错让我搞了一个小时。
dao层报错:

public boolean insertUser(User user) throws SQLException {
        QueryRunner qr = new QueryRunner(ds);// ds 类型DataSource
        String sql = "insert into user values(5,?,?,?,?,?,?,?,?,?,?)";
        System.out.println("dao:"+user);
        String[] hobbies = user.getHobby();
        StringBuilder hobby = new StringBuilder();
        if (hobbies!=null){
            for (String s : hobbies) {
                hobby.append(s).append("|");
            }
            hobby.deleteCharAt(hobby.length()-1);
        }
        //就是下面这一句报错
        int update = qr.update(sql, user.getUsername(), user.getPassword(), user.getRePassword(), user.getAge(), user.getSex(), user.getEmail(), user.getBirthday(), hobby.toString(), user.getAddress(), user.getTextarea());
        return update > 0 ? true : false;
    }

上网百度后:

  1. 数据库字段数量和参数数量不匹配 ?
  2. 数据库字段类型和参数类型不匹配 ?
  3. sql 语句 写错了?
  4. xml文件有问题 ?

一一检查后,sql语句正确,数量匹配,类型匹配。至于xml,没有检查。只有 web.xml 和 c3p0-config.xml

web.xml里面什么都没写,用的注解。

最后检查 c3p0-config.xml 才发现,妈的,数据库名字没改。这个真是犯了一个低级错误。我一直在检查数量对不对,类型对不对,忽略了 xml 文件的检查。

如果是 jdbc 包直接连接数据库的,建议检查数据库名称,账户密码有没有写错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值