在javaweb项目中,调用mysql数据库进行查询,数据库有stuinfo和hpinfo两个表,其中stuinfo存储学生信息,主键为stuno,有字段为stubuild存放学生所住楼号的信息,hpinfo存储楼管理员信息,主键为hpno,有字段为hpbuild存放楼管理员管理的楼号信息,楼管理员只能看到hpbuild中的值与stubuild的值相匹配时的学生信息,现要输入学号查询学生信息,应如何写sql语句
时间: 2024-03-31 19:36:47 浏览: 68
可以使用以下 Java 代码实现:
```java
// 假设学号存储在名为 stuno 的变量中
String stuno = "学生学号";
// 假设数据库连接存储在名为 conn 的变量中
try {
// 创建 SQL 语句
String sql = "SELECT * FROM stuinfo WHERE stubuild IN ("
+ "SELECT hpbuild FROM hpinfo WHERE hpno = ?)";
// 创建 PreparedStatement 对象
PreparedStatement stmt = conn.prepareStatement(sql);
// 设置参数
stmt.setString(1, stuno);
// 执行查询
ResultSet rs = stmt.executeQuery();
// 遍历结果集并处理数据
while (rs.next()) {
// 处理每一行数据
// 例如,输出学号和姓名
String stuno = rs.getString("stuno");
String name = rs.getString("name");
System.out.println("学号:" + stuno + ",姓名:" + name);
}
// 关闭资源
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
```
这个 Java 代码中使用了 PreparedStatement 对象来执行 SQL 语句,并使用了参数化查询来避免 SQL 注入问题。其中,将学生学号替换为实际的学生学号即可。
阅读全文