此查询:
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/