public List<awrite> selectPName(String PName){ //selectName()实现查询功能 String selectawrite = "select * from awrite where pname=?"; try{ //String sql = "select * from student where name=?"; //PreparedStatement是预编译的,也叫JDBC存储过程 //PreparedStatement对象的参数被强制进行类型转换,确保数据与底层的数据库格式匹配 //防止 SQL 注入 preparedStatement = connection.prepareStatement(selectawrite); preparedStatement.setString(1, PName); System.out.println(PName); resultSet = preparedStatement.executeQuery(); while(resultSet.next()){ awrite write = new awrite(); write.setId(resultSet.getInt("id")); write.setPName(resultSet.getString("pname")); write.setAName(resultSet.getString("aname")); write.setADynasty(resultSet.getString("adynasty")); list.add(write); } }catch(SQLException e){ e.printStackTrace(); }finally { try{ resultSet.close(); preparedStatement.close(); connection.close(); }catch (SQLException e){ e.printStackTrace(); } } return list; }在这段代码中,只能实现对一个数据表某个特定字段的查询,我应该如何修改,使得代码可以同时对两个数据表进行多字段查询,并且字段中有相关的字就可以查询到,而不是全部匹配才能查询到
时间: 2024-02-14 14:08:08 浏览: 32
你可以使用SQL语句的JOIN关键字来实现多表查询,同时使用WHERE子句来筛选匹配的记录。以下是示例代码:
```
public List<awrite> selectPNameAndAName(String PName, String AName) {
List<awrite> list = new ArrayList<>();
String selectawrite = "SELECT awrite.id, awrite.pname, awrite.aname, awrite.adynasty " +
"FROM awrite " +
"JOIN artist ON awrite.aname = artist.aname " +
"WHERE awrite.pname LIKE ? OR artist.aname LIKE ?";
try {
preparedStatement = connection.prepareStatement(selectawrite);
preparedStatement.setString(1, "%" + PName + "%");
preparedStatement.setString(2, "%" + AName + "%");
resultSet = preparedStatement.executeQuery();
while(resultSet.next()) {
awrite write = new awrite();
write.setId(resultSet.getInt("id"));
write.setPName(resultSet.getString("pname"));
write.setAName(resultSet.getString("aname"));
write.setADynasty(resultSet.getString("adynasty"));
list.add(write);
}
} catch(SQLException e) {
e.printStackTrace();
} finally {
try{
resultSet.close();
preparedStatement.close();
connection.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
return list;
}
```
在这个方法中,我们使用了JOIN关键字将awrite表和artist表连接在一起,然后使用WHERE子句来筛选出匹配的记录。注意,我们使用了LIKE运算符来进行模糊匹配。这样,当PName或AName字段中包含相关的字时,都可以查询到对应的记录。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)