使用LIKE关键字从Java中的oracle数据库中搜索

时间:2018-04-25 07:50:40

标签: java oracle jdbc

query="select * from books where BookName LIKE \"%" +txt1.getText()+"%\"";

这是针对mysql服务器的数据库代码。 oracle会有什么变化?

2 个答案:

答案 0 :(得分:3)

不要使用字符串连接构建SQL查询 - 您应该使用绑定参数。

您的查询字符串应为:

query="select * from books where BookName LIKE ?";

然后你可以做类似的事情:

Class.forName( "oracle.jdbc.OracleDriver" ); // If you are using the Oracle driver.

Connection con = DriverManager.getConnection(
  "jdbc:oracle:thin:@localhost:1521:XE",
  "username",
  "password"
);

final String query="select * from books where BookName LIKE ?";
PreparedStatement ps = conn.prepareStatement(query);            
ps.setString( 1, "%" + txt1.getText() + "%" );
ResultSet rs = ps.executeQuery();
// Loop through the result set.
// Close statement/connections

(您需要处理异常等)

  • 您不需要将查询更改为在MySQL和Oracle之间交换(只需更改驱动程序和连接字符串)。
  • 您无需转义输入字符串中的任何单引号或双引号。
  • 您可以免受SQL注入攻击。
  • Oracle可以使用bind参数缓存查询,并且在bind参数更改时不必重新解析/重新编译它。

如果要将查询编写为字符串,则SQL中的字符串文字用单引号(而不是双引号)包围:

query="select * from books where BookName LIKE '%your_string%'";

并且您需要确保字符串中的任何单引号都已正确转义(但只需使用绑定参数)。

答案 1 :(得分:0)

这个问题解决了..

query ="从书籍中选择*,其中BookName LIKE'%" + txt1.getText()+"%'&#34 ;;

谢谢大家:)