jdbcTemplate.queryForInt 查询出错

发布于 2022-09-01 06:37:45 字数 815 浏览 15 评论 0

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; 数据库中有只账号及密码
    }

下面是数据库
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

趁年轻赶紧闹 2022-09-08 06:37:45

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

◇流星雨 2022-09-08 06:37:45

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文