【发布时间】:2014-05-30 10:46:27
【问题描述】:
在 MySQL 数据库中进行不区分大小写的选择时,我需要帮助。
我在 MySQL 中找到了解决方案,但无法将其转换为 Java。
这是 MySQL:
SELECT * FROM allclient where name="Zdi0" collate utf8_bin
这可行,但在 java 中:
PreparedStatement pstm = mysql.Pstm("SELECT id,name FROM allclient WHERE user = ? collate utf8_bin AND pass = ? ");
pstm.setString(1, this.name);
pstm.setString(2, this.pass);
ResultSet rs = pstm.executeQuery();
产生这个异常:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: COLLATION 'utf8_bin' is not valid for CHARACTER SET 'latin1'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1467)
at Luncher4.run(Luncher4.java:96)
为什么它不起作用?
【问题讨论】:
-
不清楚你在追求什么,但你试过
WHERE name LIKE 'Zdi0'吗?与=不同,LIKE运算符不区分大小写。
标签: java mysql utf-8 prepared-statement