【问题标题】:Java, JDBC executeQuery with no result but gets result when running statement myselfJava,JDBC executeQuery没有结果,但在自己运行语句时得到结果
【发布时间】:2012-11-02 10:42:54
【问题描述】:

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

| "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)。

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

亲切的问候,克莱德

【问题讨论】:

  • 在代码中执行之前尝试打印语句。这可能会帮助您调试
  • 我已经这样做了。它在执行之前显示SELECT id, text, hex_color FROM statuses WHERE text = 'ARBETE PÅGÅR'

标签: java mysql select jdbc


【解决方案1】:

你确定吗

  • 'ARBETE PÅGÅR' 没有出现复制粘贴错误或
  • 数据库在'ARBETE PÅGÅR' 中/之后包含额外的空格或其他不可打印的字符

尝试用通配符包围,例如。 SELECT * FROM statuses WHERE text LIKE '%ARBETE%PÅGÅR%' 看看会不会有什么不同?

干杯,

【讨论】:

  • 该声明由网站生成。我所做的就是复制生成的失败的语句,自己运行它,我得到 1 个结果。通配符也不起作用。瑞典语,我将状态文本更改为英文。感谢您的宝贵时间
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2022-06-23
    • 1970-01-01
    • 2012-02-11
    • 2011-12-04
    • 2014-08-17
    • 1970-01-01
    • 2014-11-27
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多