sqlserver数据库pay0718,有两个表,一个为部门表,列名分别为部门号,部门名,另一个表为person表,列名为工号,姓名,性别,外键部门号,现在我已经用Java语言连接到了数据库,我写了一个类personselect,用来展示所有员工的信息,我还写了一个类personadd,用来添加员工信息,再增加一个类searchperson,用来根据部门名或者部门号进行模糊查询person表中的信息,请问怎么才能做到模糊查询,给出代码实现
时间: 2023-11-12 19:09:40 浏览: 26
您可以使用SQL语句中的LIKE关键字进行模糊查询,具体可以参考下面的代码实现:
```java
public class SearchPerson {
public static void searchByDept(String dept) {
String sql = "SELECT * FROM person WHERE department LIKE ?";
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=pay0718", "username", "password");
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "%" + dept + "%");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println("工号:" + rs.getString("id") + ",姓名:" + rs.getString("name") + ",性别:" + rs.getString("gender"));
}
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void searchByDeptId(int deptId) {
String sql = "SELECT * FROM person WHERE department_id LIKE ?";
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=pay0718", "username", "password");
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "%" + deptId + "%");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println("工号:" + rs.getString("id") + ",姓名:" + rs.getString("name") + ",性别:" + rs.getString("gender"));
}
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
其中,`searchByDept`方法根据部门名进行模糊查询,`searchByDeptId`方法根据部门号进行模糊查询。在查询语句中使用了LIKE关键字,并将查询条件设置为`%dept%`或者`%deptId%`,这样就可以实现模糊查询了。