java - 在java中执行查询不返回结果,但在mysql工作台中仍然返回结果

标签 java mysql jdbc

此查询:

    SELECT 
    r.report_id,
    r.user_id,
    u.user_name,
    u.user_mail,
    d.department_name,
    r.report_comment,
    r.report_target_date,
    r.report_create_date,
    r.report_revised_date,
    r.report_root_id,
    report_revised_id
FROM
    report r
        JOIN
    user u ON u.user_id = r.user_id
        JOIN
    department d ON u.department_id = d.department_id
        JOIN
    authority a ON r.user_id = a.user_src_id
        AND a.user_dest_id = 131
WHERE
    r.report_target_date BETWEEN '2014-07-23 23:59:00' AND '2014-08-22 00:00:00'
    AND r.report_comment LIKE '%事務%'

在 mysql 工作台中,此查询有返回值,但在 java 中使用它时,它不会返回任何内容:

Statement stmt = connection.createStatement(); 
ResultSet rs = null;
rs = stmt.executeQuery(query);

在mysql工作台中,该查询有返回值,但rs返回为空。

最佳答案

您将日语字符传递到查询中。这很可能是字符编码问题。

使用 PreparedStatement 并通过 setString() 调用插入值,这将正确处理编码。

修改您的查询以包含参数(用问号标记):

...
WHERE
    r.report_target_date BETWEEN '2014-07-23 23:59:00' AND '2014-08-22 00:00:00'
    AND r.report_comment LIKE ?

以及 Java 代码:

PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1, "%事務%"); // Parameter index is 1-based
ResultSet rs = ps.executeQuery();

关于java - 在java中执行查询不返回结果,但在mysql工作台中仍然返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25480529/

相关文章:

javascript - 近10万条记录的分页、搜索和排序

java - 从 Java 访问 Visual FoxPro 数据库

php - SQL IN 运算符在使用其他条件时不起作用

java - 使用 org.eclipse.core.expressions : expressionLanguage. 找不到 exsd

java - 我可以使用 java 创建 Windows Phone 应用程序吗

java - 如何从 JTextfield 获取文本并将其用作 int

mysql - 将 mySQL 数据库行导出为文本文件?

java - SQL异常 : no such table

java - 带有连接池示例的 ClassNotFoundException (org.postgresql.Driver)

Java Spring Rest 验证配置属性访问