我将如何在 java 中使用单引号进行查询语句。当我用单引号搜索一个词时,它显示 s no record to display
例如我有一个名字 D'costa 我如何使用 java 搜索它
getSearchByUserSQL.append("SELECT * FROM SID_USERS ");
getSearchByUserSQL.append("WHERE lower(FIRSTNAME) like ?
OR lower(LASTNAME) like ?");
最佳答案
虽然您可以尝试并手动转义所有字符串,但它的工作量很大而且很困难(不同的数据库可能有不同的转义规则)。作为您不应该这样做的进一步证据 - 看看 apahe commons lang - 正是出于这个原因,他们放弃了对 2.* 和 3.* 之间转义 SQL 的支持。
因此,如果您将查询变成 PreparedStatement , 然后你可以使用 PreparedStatement.setParameter(int, String)插入您的动态值而不是占位符,JDBC 驱动程序将为您完成所有转义。所以:
String myQuery = "SELECT * FROM SID_USERS WHERE lower(FIRSTNAME) like :1 OR lower(LASTNAME) like :2";
PreparesStatement ps = connection.prepareStatement(myQuery);
ps.setParameter(1,"Mickey");
ps.setParameter(2,"Mouse");
results = ps.execute();
关于java - 在搜索中处理单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14331364/