Java,JDBC executeQuery没有结果,但在自己运行语句时得到结果

时间:2012-11-02 10:42:54

标签: java mysql select jdbc

我的MySQL数据库中有一个名为“status”的表,如下所示:

| "id" (int) | "text" varchar(50) | "hex_color" varchar(10) |
-------------------------------------------------------------
| 1          | EJ PÅBÖRJAD        | #FF3300                 |
| 2          | ARBETE PÅGÅR       | #FFFF00                 |
| 3          | AVVAKTAR           | #80F0FF                 |
| 4          | ÅTGÄRDAD           | #6DE37A                 |
-------------------------------------------------------------

这是我的JDBC Java代码:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(statement);

while(rs.next()){
   Long pid = rs.getLong(1);
   String ptext = rs.getString(2);
   String hex_color = rs.getString(3);

   status = new Statuses(pid, ptext, hex_color);
}

statement时:

SELECT id, text, hex_color FROM statuses WHERE text = 'EJ PÅBÖRJAD' - 1个结果

SELECT id, text, hex_color FROM statuses WHERE text = 'ARBETE PÅGÅR' - 0结果

SELECT id, text, hex_color FROM statuses WHERE text = 'AVVAKTAR' - 1个结果

SELECT id, text, hex_color FROM statuses WHERE text = 'ÅTGÄRDAD' - 1个结果

为什么我在第二个声明中获得0结果? 当我在“mysql命令行”中运行它时,我得到1个结果! 我已经检查过我使用相同的字符集(UTF-8)来排除字符集问题。

有人可以帮我解决这个问题吗?

亲切的问候,克莱德

2 个答案:

答案 0 :(得分:1)

你绝对确定

  • 您尚未为'ARBETE PÅGÅR'
  • 制作复制粘贴错误
  • 数据库在'ARBETE PÅGÅR'
  • 之后/之后包含额外空格或其他不可打印字符

尝试使用通配符,例如。 SELECT * FROM statuses WHERE text LIKE '%ARBETE%PÅGÅR%'并查看是否会产生影响?

干杯,

答案 1 :(得分:0)

我知道这是一个7个月大的帖子,但我认为你可以在插入这些行后检查你是否已经提交。
当您自己运行查询时,您可能正在使用与插入这些行相同的会话。这就是你能看到它们的原因 在您提交之前,其他用户将无法看到(插入的)效果。