当前位置:首页 > 数据库 > 正文

JSP如何连接SQL数据库?

在JSP中连接SQL数据库需使用JDBC技术:加载对应数据库驱动,通过 DriverManager获取 Connection对象建立连接,利用 StatementPreparedStatement执行SQL语句,处理结果集后关闭连接释放资源。

JSP中连接SQL数据库需要遵循标准JDBC流程,以下是详细步骤和注意事项:


准备工作

  1. 安装数据库
    选择MySQL/SQL Server等数据库,下载安装并创建数据库(示例数据库名:test_db,表名:users)。

  2. 下载JDBC驱动

    JSP如何连接SQL数据库?  第1张

    • 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>

常见问题解决

  1. 驱动加载失败

    • 检查JAR文件是否在/WEB-INF/lib目录
    • 重启Tomcat服务器
  2. 连接拒绝(Access Denied)

    JSP如何连接SQL数据库?  第2张

    • 检查数据库用户名/密码
    • 确认数据库允许远程连接(如需要)
  3. 时区错误(MySQL)
    在连接URL中添加:?serverTimezone=Asia/Shanghai


安全建议

  1. 使用连接池
    避免频繁创建连接(推荐Tomcat JDBC Pool或Druid)。
  2. 防SQL注入
    使用PreparedStatement替代Statement

    String sql = "SELECT * FROM users WHERE id=?";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setInt(1, userId); // 安全设置参数
  3. 敏感信息保护
    不要将数据库密码硬编码在JSP中,使用配置文件或环境变量。

JSP连接数据库的核心是JDBC四步流程:加载驱动→建立连接→执行SQL→释放资源,务必注意资源关闭和异常处理,生产环境应使用连接池和预编译语句提升性能及安全性。

JSP如何连接SQL数据库?  第3张

引用说明

  • 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/
0