前提:使用JdbcTemplate连接数据库,在执行查询语句时一直报错,但是sql语句在sqlyong中正常执行。
try {
//1.定义sqlyuju
String sql = "select * from user where username = ? and password = ?";
//2.执行sql,返会user对象
User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username, password);
System.out.println(user);
return user;
} catch (Exception e) {
e.printStackTrace();
return null;
}
错误出现在sql语句中,原因是username为中文。
首先查看了数据库以及表的编码格式,均为utf-8,在网上找了一些解决办法都没有解决,最后通过更改连接数据的配置文件,强制设置字符集编码,成功解决。
jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8
为确保字符集完全统一,在建表、建库的时候要强制设定统一字符集。