НЕ строить 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%'";
и вам нужно убедиться, что все одиночные кавычки в вашей строке правильно экранированы (но вместо этого просто используйте параметр bind).