上一篇
JSP如何连接SQL数据库?
- 数据库
- 2025-07-05
- 6
在JSP中连接SQL数据库需使用JDBC技术:加载对应数据库驱动,通过
DriverManager获取
Connection对象建立连接,利用
Statement或
PreparedStatement执行SQL语句,处理结果集后关闭连接释放资源。
在JSP中连接SQL数据库需要遵循标准JDBC流程,以下是详细步骤和注意事项:
准备工作
-
安装数据库
选择MySQL/SQL Server等数据库,下载安装并创建数据库(示例数据库名:test_db,表名:users)。 -
下载JDBC驱动

- MySQL:下载mysql-connector-java.jar
- SQL Server:下载mssql-jdbc.jar
将JAR文件放入项目的/WEB-INF/lib目录。
连接数据库的4个核心步骤
步骤1:加载数据库驱动
<%@ page import="java.sql.*" %>
<%
try {
Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // SQL Server
} catch (ClassNotFoundException e) {
out.println("驱动加载失败: " + e.getMessage());
}
%>
步骤2:建立数据库连接
<%
String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC"; // MySQL
// String url = "jdbc:sqlserver://localhost:1433;databaseName=test_db"; // SQL Server
String user = "root";
String password = "your_password";
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
out.println("数据库连接成功!");
} catch (SQLException e) {
out.println("连接失败: " + e.getMessage());
}
%>
步骤3:执行SQL查询
<%
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
String sql = "SELECT * FROM users";
rs = stmt.executeQuery(sql);
while (rs.next()) {
out.println("<br>ID: " + rs.getInt("id") + ", 姓名: " + rs.getString("name"));
}
} catch (SQLException e) {
out.println("查询错误: " + e.getMessage());
}
%>
步骤4:关闭连接(关键!)
<%
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close(); // 释放资源
} catch (SQLException e) {
out.println("关闭连接时出错: " + e.getMessage());
}
%>
完整示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>JSP数据库连接示例</title>
</head>
<body>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 建立连接
String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC";
conn = DriverManager.getConnection(url, "root", "123456");
// 3. 执行查询
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT id, name, email FROM users");
while (rs.next()) {
out.println("<p>用户: " + rs.getString("name") + " | Email: " + rs.getString("email") + "</p>");
}
} catch (Exception e) {
out.println("<p style='color:red'>错误: " + e.getMessage() + "</p>");
} finally {
// 4. 关闭连接
try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); }
try { if (stmt != null) stmt.close(); } catch (SQLException e) { e.printStackTrace(); }
try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); }
}
%>
</body>
</html>
常见问题解决
-
驱动加载失败
- 检查JAR文件是否在
/WEB-INF/lib目录 - 重启Tomcat服务器
- 检查JAR文件是否在
-
连接拒绝(Access Denied)

- 检查数据库用户名/密码
- 确认数据库允许远程连接(如需要)
-
时区错误(MySQL)
在连接URL中添加:?serverTimezone=Asia/Shanghai
安全建议
- 使用连接池
避免频繁创建连接(推荐Tomcat JDBC Pool或Druid)。 - 防SQL注入
使用PreparedStatement替代Statement:String sql = "SELECT * FROM users WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, userId); // 安全设置参数
- 敏感信息保护
不要将数据库密码硬编码在JSP中,使用配置文件或环境变量。
JSP连接数据库的核心是JDBC四步流程:加载驱动→建立连接→执行SQL→释放资源,务必注意资源关闭和异常处理,生产环境应使用连接池和预编译语句提升性能及安全性。

引用说明:
- MySQL官方JDBC文档:https://dev.mysql.com/doc/connector-j/
- Microsoft JDBC驱动指南:https://docs.microsoft.com/zh-cn/sql/connect/jdbc/
- Oracle JDBC教程:https://docs.oracle.com/javase/tutorial/jdbc/
