jdbcTemplate.queryForInt 查询出错

java public int findByUser(String username, String password) {

String sql = "select count(*) from userinfo where username=? and password=?";

return jdbcTemplate.queryForInt(sql, username, password);

}

上面代码是通过spring方式查询数据库判断用户名密码是否正确,但遇到一个问题就是当然参数值是中文的时候,即使数据库中有这个账号也查询不到,换成英文就可以。不知道什么原因。

下面是测试代码

java    @Test

public void hasMatchUser() {

boolean a = userinfoService.hasMatchUser("wenti", "wentis");

assertTrue(a); // return true; 数据库中有只账号及密码

boolean b = userinfoService.hasMatchUser("问题", "wentis");

assertTrue(b); // return false; 数据库中有只账号及密码

}

下面是数据库
图片描述

回答:

也许是编码问题,看看db的编码是什么?你用jdbcTemplate存一个中文的数据,然后看db里show出来的是正确的么

回答:

mysql下执行

show variables like 'character%'

查看字符编码,不是UTF-8的话修改mysql.cnf,Windows是mysql.ini

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

collation-server = utf8_unicode_ci

init-connect='SET NAMES utf8'

character-set-server = utf8

以上是 jdbcTemplate.queryForInt 查询出错 的全部内容, 来源链接: utcz.com/a/166165.html

回到顶部