[英]execute query in java not return results but in mysql workbench still return results
This query: 该查询:
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 '%事務%'
In mysql workbench this query has return value but when using it in java it's not returning anything: 在mysql工作台中,此查询具有返回值,但是在Java中使用该查询时不会返回任何内容:
Statement stmt = connection.createStatement();
ResultSet rs = null;
rs = stmt.executeQuery(query);
In mysql workbench this query has return value but rs return is empty. 在mysql工作台中,此查询具有返回值,但rs return为空。
You pass Japanese characters into the query. 您将日语字符传递到查询中。 This could easily be a character encoding issue. 这很容易是字符编码问题。
Use a PreparedStatement
and insert the value through a setString()
call which will properly take care of the encoding. 使用PreparedStatement
并通过setString()
调用插入值,该调用将正确处理编码。
Modify your query
to have a parameter (marked by a question mark): 修改query
以使其具有参数(以问号标记):
...
WHERE
r.report_target_date BETWEEN '2014-07-23 23:59:00' AND '2014-08-22 00:00:00'
AND r.report_comment LIKE ?
And the Java code: 和Java代码:
PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1, "%事務%"); // Parameter index is 1-based
ResultSet rs = ps.executeQuery();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.