WHERE阿拉伯语条件下的SQL查询

时间:2015-09-05 15:14:31

标签: java mysql database oracle

当我编写数据库查询时:

select * from mytable WHERE subTitle='داتا باللغه العربيه';

它没有返回任何东西,但它可以在数据库表中找到

2 个答案:

答案 0 :(得分:1)

由于您已将Java作为标记包含在内,因此我假设您使用JDBC连接到数据库,在这种情况下,您应该从不发送该特定字符串(SQL语句)到数据库。

这是因为该特定字符串意味着用于构建SQL语句的字符串连接,如:

String subtitle = "داتا باللغه العربيه";
String sql = "select * from mytable WHERE subTitle='" + subtitle + "'";

这是一个非常大的不,不,因为它让你容易受到SQL injection攻击。

相反,您应该使用PreparedStatement并使用参数标记:

String subtitle = "داتا باللغه العربيه";
String sql = "select * from mytable WHERE subTitle=?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
    stmt.setString(1, subtitle);
    try (ResultSet rs = stmt.executeQuery()) {
        // use result set here
    }
}

如果这不能解决您遇到的字符集问题,请尝试使用setNString。 'N'实际上也应该用于字符串文字,如N'داتا باللغه العربيه'中所示,但不要使用字符串文字。

答案 1 :(得分:-1)

从mytable WHERE subTitle ='داتاباللغهالعربيه'中选择*