如何正确地在Java中使用MySQL中的LIKE搜索变量?
以下是使用搜索变量及LIKE的正确语法−
String sqlQuery;
sqlQuery = "select *from yourTableName where yourColumnName like '%" +yourSearchVariableName + "%'";
让我们创建一个表 −
mysql> create table demo19
−> (
−> id int not null auto_increment primary key,
−> name varchar(50)
−> );
Query OK, 0 rows affected (3.48 sec)
使用insert命令将一些记录插入表中−
mysql> insert into demo19(name) values('John Smith');
Query OK, 1 row affected (0.15 sec)
mysql> insert into demo19(name) values('David Miller');
Query OK, 1 row affected (0.15 sec)
mysql> insert into demo19(name) values('Adam Smith');
Query OK, 1 row affected (0.12 sec)
mysql> insert into demo19(name) values('Chris Brown');
Query OK, 1 row affected (0.13 sec)
使用select语句从表中显示记录−
mysql> select *from demo19
这将产生以下输出−
+----+--------------+
| id | name |
+----+--------------+
| 1 | John Smith |
| 2 | David Miller |
| 3 | Adam Smith |
| 4 | Chris Brown |
+----+--------------+
4 rows in set (0.00 sec)
阅读更多:MySQL 教程
实例
以下是正确使用带搜索变量及LIKE的Java代码 −
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RemoveJavaQueryError {
public static void main(String[] args) {
Connection con = null;
Statement statement = null;
try {
String searchKeyWord = "Smith";
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledatabase", "root", "123456");
statement = (Statement) con.createStatement();
String sqlQuery;
sqlQuery = "select *from demo19 where name like '%" + searchKeyWord + "%'";
ResultSet rs = statement.executeQuery(sqlQuery);
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
它将产生以下输出−
John Smith
Adam Smith
以下是样例输出的快照。