我的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)来排除字符集问题。
有人可以帮我解决这个问题吗?
亲切的问候,克莱德答案 0 :(得分:1)
你绝对确定
'ARBETE PÅGÅR'
或'ARBETE PÅGÅR'
尝试使用通配符,例如。 SELECT * FROM statuses WHERE text LIKE '%ARBETE%PÅGÅR%'
并查看是否会产生影响?
干杯,
答案 1 :(得分:0)
我知道这是一个7个月大的帖子,但我认为你可以在插入这些行后检查你是否已经提交。
当您自己运行查询时,您可能正在使用与插入这些行相同的会话。这就是你能看到它们的原因
在您提交之前,其他用户将无法看到(插入的)效果。