Springboot JdbcTemplate查询输入中文报错的debug
学到spring data,其中提供了jdbcTemplate来使用jdbc,比原生jdbc好用很多,排除了很多容易犯的错误,且不需要自己关闭
在我查询数据库中last_name = 秦疆这样的sql语句时,报错
一、原生数据库console测试
select * from employee where last_name = "秦疆"


发现并没有报错
二、Java代码排错
 //修改用户信息
    @GetMapping("/update/{name}")
    public String updateUser2(@PathVariable("name") String name){
        //插入语句
        String sql = "update employee set last_name=?,email=? where last_name=" + name;
        //数据
        Object[] objects = new Object[2];
        objects[0] = "秦疆";
        objects[1] = "24736743@sina.com";
        jdbcTemplate.update(sql,objects);
        //查询
        return "updateOk";
    }


感到很奇怪,我把sql打印sout一下

发现这与原生MySQL console是不一样的,少了`号
三、修改代码
    //修改用户信息
    @GetMapping("/update/{name}")
    public String updateUser(@PathVariable("name") String name){
        //插入语句
        String sql = "update employee set last_name=?,email=? where last_name=?";
        //数据
        Object[] objects = new Object[3];
        objects[0] = "秦疆";
        objects[1] = "24736743@sina.com";
        objects[2] = name;
        jdbcTemplate.update(sql,objects);
        //查询
        return "updateOk";
    }
之前是字符串拼接肯定没有符号,这次让jdbcTemplate来做

控制台返回正确

数据库中同样完成了更改
四、总结
在数据库sql语句中,尽量少用字符串拼接这种原始操作

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号