jsp连表查询
时间: 2023-07-29 22:12:05 浏览: 98
jsp实现对数据库的查询.txt
JSP 本身并不支持数据库查询,需要借助 Java 的 JDBC(Java Database Connectivity)技术来实现。下面是一个简单的 JSP 连接 MySQL 数据库进行连表查询的示例:
假设有两张表:`students`(学生表)和 `grades`(成绩表),它们之间的关系是一个学生可以对应多个成绩记录。
1. 在 JSP 页面中引入 JDBC 相关的类库:
```java
<%@ page import="java.sql.*" %>
```
2. 使用 JDBC 连接 MySQL 数据库:
```java
<%
// 定义数据库连接信息
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "password";
// 加载 MySQL 驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 建立数据库连接
Connection conn = DriverManager.getConnection(url, username, password);
%>
```
3. 编写 SQL 查询语句,并执行查询操作:
```java
<%
// 编写 SQL 查询语句
String sql = "SELECT * FROM students s JOIN grades g ON s.id = g.student_id";
// 创建 Statement 对象
Statement stmt = conn.createStatement();
// 执行查询操作
ResultSet rs = stmt.executeQuery(sql);
%>
```
4. 在 JSP 页面中输出查询结果:
```java
<table>
<thead>
<tr>
<th>学生姓名</th>
<th>课程名称</th>
<th>成绩</th>
</tr>
</thead>
<tbody>
<% while (rs.next()) { %>
<tr>
<td><%= rs.getString("name") %></td>
<td><%= rs.getString("course") %></td>
<td><%= rs.getInt("score") %></td>
</tr>
<% } %>
</tbody>
</table>
```
完整的 JSP 代码如下:
```java
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>学生成绩查询</title>
</head>
<body>
<h1>学生成绩查询</h1>
<%
// 定义数据库连接信息
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "password";
// 加载 MySQL 驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 建立数据库连接
Connection conn = DriverManager.getConnection(url, username, password);
// 编写 SQL 查询语句
String sql = "SELECT * FROM students s JOIN grades g ON s.id = g.student_id";
// 创建 Statement 对象
Statement stmt = conn.createStatement();
// 执行查询操作
ResultSet rs = stmt.executeQuery(sql);
%>
<table>
<thead>
<tr>
<th>学生姓名</th>
<th>课程名称</th>
<th>成绩</th>
</tr>
</thead>
<tbody>
<% while (rs.next()) { %>
<tr>
<td><%= rs.getString("name") %></td>
<td><%= rs.getString("course") %></td>
<td><%= rs.getInt("score") %></td>
</tr>
<% } %>
</tbody>
</table>
<%
// 关闭数据库连接
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
```
注意:上述示例代码仅供参考,实际使用时需要根据具体情况进行修改和优化。同时,为避免 SQL 注入等安全问题,应该对用户输入的参数进行校验和过滤。
阅读全文