当我编写数据库查询时:
select * from mytable WHERE subTitle='داتا باللغه العربيه';
它没有返回任何东西,但它可以在数据库表中找到
答案 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 ='داتاباللغهالعربيه'中选择*