这个报错让我搞了一个小时。
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;
}
上网百度后:
- 数据库字段数量和参数数量不匹配 ?
- 数据库字段类型和参数类型不匹配 ?
- sql 语句 写错了?
- xml文件有问题 ?
一一检查后,sql语句正确,数量匹配,类型匹配。至于xml,没有检查。只有 web.xml 和 c3p0-config.xml
web.xml里面什么都没写,用的注解。
最后检查 c3p0-config.xml 才发现,妈的,数据库名字没改。这个真是犯了一个低级错误。我一直在检查数量对不对,类型对不对,忽略了 xml 文件的检查。
如果是 jdbc 包直接连接数据库的,建议检查数据库名称,账户密码有没有写错。