0

我的 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),它排除了字符集问题。

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

亲切的问候,克莱德

4

2 回答 2

1

你绝对确定

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

尝试用通配符包围,例如。SELECT * FROM statuses WHERE text LIKE '%ARBETE%PÅGÅR%'看看这是否有所作为?

干杯,

于 2012-11-02T11:37:25.517 回答
0

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

于 2013-06-26T04:46:03.453 回答