java - 我想在JDBC中插入SQL的特殊字符

标签 java sql ms-access jdbc

我想将此 Access sql 查询转换为 Java JDBC

选择* 来自书籍 其中 Lcase(title) LIKE Lcase('*jdbc*') AND Lcase(title) LIKE Lcase('*programming*')

我使用这样的preparedStatement

String sql1="Select * From books Where Lcase(title) LIKE Lcase(%?%) AND Lcase(title) LIKE Lcase(%?%)";
PreparedStatement ps1=con.prepareStatement(sql1);
ps1.setString(1, "jdbc");
ps1.setString(2, "programming");
ResultSet rs1=ps1.executeQuery();

但是我收到语法错误

最佳答案

如果您想将 % 插入到 Lcase 使用的值中,您有两种选择:

  • 在代码中添加%s,或者
  • 在查询中使用串联。

第一种方法如下所示:

String sql1="Select * From books Where Lcase(title) LIKE Lcase(?) AND Lcase(title) LIKE Lcase(?)";
PreparedStatement ps1=con.prepareStatement(sql1);
ps1.setString(1, "%jdbc%");
ps1.setString(2, "%programming%");

第二种方法如下所示:

String sql1="Select * From books Where Lcase(title) LIKE Lcase('%' & ? & '%') AND Lcase(title) LIKE Lcase('%' & ? & '%')";

关于java - 我想在JDBC中插入SQL的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29391612/

相关文章:

java - 如何在intellij ce的执行maven目标窗口中清除先前 "command line"的列表

java原始数组到JSONArray

mysql - 连接同一表的两列,忽略空值。数据库

php - 从另一个表中的行不匹配的表中选择

vba - 如何使用 VBA 在 MS Access 中添加新记录?

java - 根据角色限制用户

java - 设置 webapprootkey no-web.xml

mysql - 设计不重叠的日期时间事件

sql - 在 VB.Net 中使用 SQL 连接到 Access 数据库

sql - 如何只获取最新日期的查询结果?