java - 如何使用java比较mysql查询中的utf8文本

标签 java mysql database encoding utf-8

我在 MySQL 中使用 java 从包含 utf-8 格式数据的表中进行选择时遇到问题,在 WHERE 子句中我需要比较列值是否等于 java String 但它们不匹配

"Select age from student where name = '"+stringVariable+"';"

stringVariable 有时可以是阿拉伯语,所以在这种情况下它们不匹配

数据库是 utf8mb4,java 和数据库之间的连接也是 utf_8,我在插入或选择数据时没有问题,但在比较时出现问题

我试着像这样转换字符串,但它也不匹配

byte[] b = stringVariable.getBytes("UTF-8");
String str = new String(b,"UTF-8");

那么有人对此有任何解决方案吗?!

提前致谢

最佳答案

使用参数。然后,驱动程序应根据连接属性对它们进行正确编码。

PreparedStatement statement = connection.prepareStatement(
    "select age from student where name = ?");      
statement.setString(1, stringVariable);

此外,这也正确地转义了特殊的 SQL 字符(如单引号)。

关于java - 如何使用java比较mysql查询中的utf8文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851636/

相关文章:

php - 如何在 Membermouse 插件的注册页面中获取最后插入的 ID?

mysql - 当通过 mysql_query() 运行时,这些 mysql 查询不返回任何行的错误是什么?

MySQL:合并两个表,某些列不同

mysql - 快速搜索庞大的mysql数据库

java - Cloudant 客户端数据库 - startKey 和 endKey - Java

php - 如何在 PHP 中连接到 PDO

java - hibernate 映射 : OneToMany and OneToOne on child object property

C# 连接字符串到数据库。最佳实践?

Java 字符串类型数组或简单字符串的用法

Java RMI tcp 连接内存问题