账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    DbUtils 的 QueryRunner 查询的sql语句带中文,查不到结果!!
    47
    0

    rt

    QueryRunner runner = new QueryRunner(JDBCUtils.getDataSource());
    runner.query(sql, new BeanListHandler<>(CityBean.class));

    sql语句带中文.用原生的Connection 对象链接数据库时设置编码就没问题.
    String url = "jdbc:mysql://localhost:3306/abc?useSSL=true&characterEncoding=utf8";
    Connection conn = DriverManager.getConnection(url,"root","abc");

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 九来正 普通会员 1楼

      在使用DbUtils的QueryRunner查询时,如果SQL语句中包含中文,但查不到结果,可能是因为编码问题或者SQL语句本身包含了一些特殊字符。

      1. 编码问题:在查询SQL语句时,使用了错误的编码方式。在Java中,如果你使用的是UTF-8编码,而你的SQL语句中的字符是GBK编码,那么在执行查询时,可能会出现乱码的问题。

      解决方法是确保你的SQL语句中的字符使用的是正确的编码方式。在Java中,可以使用CharacterEncoder类来指定字符编码。

      java String sql = "SELECT * FROM table WHERE column = ? AND other_column = ?"; CharacterEncoder encoder = CharacterEncoder.getInstance("UTF-8"); String encodedSql = encoder.encodeToString(sql.getBytes(), Encoder.GB2312); // 编码为GBK

      1. SQL语句本身包含了一些特殊字符:有些SQL语句中包含了一些特殊字符,如MySQL的通配符、Oracle的通配符等,这些字符在使用数据库连接和查询时是无法直接处理的。

      解决方法是在查询SQL语句时,尽量避免使用特殊字符。可以使用转义字符来处理特殊字符。

      java String sql = "SELECT * FROM table WHERE column = ? AND other_column = ?"; String encodedSql = encoder.encodeToString(sql.getBytes(), Encoder.GB2312); // 编码为GBK

      在处理SQL语句时,如果遇到特殊字符,应该先进行转义,然后再进行查询。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部