首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Web 連接 MySQL 與 SQL Server 完整指南:JSP 與 Java 類實作範例

     編輯:Java 相關知識

前言

在 Java Web 開發中,資料庫連線是核心基礎功能。本文將詳細說明如何在 JSP 頁面與獨立 Java 類別中,分別建立 MySQL 與 SQL Server 的資料庫連線,並提供完整可執行的程式碼範例供參考。

一、JSP 頁面連接 MySQL 資料庫

在 JSP 中直接撰寫資料庫連線邏輯(雖然現代開發建議使用 MVC 架構分離關注點,但理解基本原理仍很重要)。以下範例展示載入驅動、建立連線、測試連線並關閉資源的完整流程。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="com.mysql.jdbc.Driver"%>
<%@page import="java.sql.SQLException"%>
<%@ page import="java.sql.*"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    <title>MySQL 連線測試</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
</head>
<body>
<%
    try {
        // 1. 載入 MySQL JDBC 驅動
        Class.forName("com.mysql.jdbc.Driver");
        
        // 2. 定義連線參數
        String url = "jdbc:mysql://localhost:3306/test"; // 資料庫 URL
        String username = "your_username";              // 使用者名稱
        String password = "your_password";              // 密碼
        
        // 3. 建立連線
        Connection conn = DriverManager.getConnection(url, username, password);
        
        // 4. 驗證連線
        if (conn != null && !conn.isClosed()) {
            out.println("✅ MySQL 資料庫連線成功!");
        } else {
            out.println("❌ MySQL 資料庫連線失敗!");
        }
        
        // 5. 關閉連線
        conn.close();
    } catch (ClassNotFoundException e) {
        out.println("❌ 找不到驅動類別:" + e.getMessage() + "<br>");
        e.printStackTrace();
    } catch (SQLException e) {
        out.println("❌ 資料庫連線錯誤:" + e.getMessage() + "<br>");
        e.printStackTrace();
    }
%>
<br><br>
<form action="sqlserver.jsp" method="post">
    <input type="submit" value="測試 SQL Server 連線" />
</form>
</body>
</html>

二、JSP 頁面連接 SQL Server 資料庫

SQL Server 的連線方式類似,主要差異在於 JDBC 驅動類別名稱與連線 URL 格式。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.*"%>
<%@page import="com.microsoft.sqlserver.jdbc.SQLServerDriver"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    <title>SQL Server 連線測試</title>
</head>
<body>
<%
    try {
        // 1. 載入 SQL Server JDBC 驅動
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        
        // 2. 定義連線參數
        // 格式:jdbc:sqlserver://主機:連接埠;DatabaseName=資料庫名稱
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName=your_db";
        String username = "sa";
        String password = "your_password";
        
        // 3. 建立連線
        Connection conn = DriverManager.getConnection(url, username, password);
        
        // 4. 驗證連線
        if (conn != null && !conn.isClosed()) {
            out.println("✅ SQL Server 資料庫連線成功!");
        } else {
            out.println("❌ SQL Server 資料庫連線失敗!");
        }
        
        conn.close();
    } catch (ClassNotFoundException e) {
        out.println("❌ 找不到驅動類別:" + e.getMessage() + "<br>");
        e.printStackTrace();
    } catch (SQLException e) {
        out.println("❌ 資料庫連線錯誤:" + e.getMessage() + "<br>");
        e.printStackTrace();
    }
%>
<br><br>
<form action="mysql.jsp" method="post">
    <input type="submit" value="測試 MySQL 連線" />
</form>
</body>
</html>

三、Java 類別中統一管理資料庫連線(DAO 模式)

實務開發中,建議將資料庫連線邏輯封裝在獨立的 DAO (Data Access Object) 類別中,避免在 JSP 中混雜商業邏輯。以下範例示範一個支援 MySQL 與 SQL Server 切換的連線工具類。

package com.example.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnectionManager {
    
    // 可透過設定檔或建構子注入以下參數
    private String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=master";
    private String user = "sa";
    private String password = "root";
    
    // Getter/Setter 省略...
    
    /**
     * 取得資料庫連線
     * @return Connection 物件,若連線失敗回傳 null
     */
    public Connection getConnection() {
        try {
            // 載入驅動
            Class.forName(driverName);
            // 建立連線
            return DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            System.err.println("❌ 找不到 JDBC 驅動:" + driverName);
            e.printStackTrace();
        } catch (SQLException e) {
            System.err.println("❌ 資料庫連線失敗:" + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }
    
    // 測試主程式
    public static void main(String[] args) {
        DBConnectionManager manager = new DBConnectionManager();
        Connection conn = manager.getConnection();
        if (conn != null) {
            System.out.println("✅ 資料庫連線正常!");
            try { conn.close(); } catch (SQLException e) { e.printStackTrace(); }
        } else {
            System.out.println("❌ 資料庫連線失敗!");
        }
    }
}

四、關鍵注意事項

  • 驅動程式:必須將對應的 JDBC 驅動 JAR 檔(如 mysql-connector-java.jar、mssql-jdbc.jar)加入專案類別路徑。
  • 連線字串:MySQL 使用 jdbc:mysql://host:port/dbname;SQL Server 使用 jdbc:sqlserver://host:port;DatabaseName=dbname。
  • 資源管理:務必在 finally 區塊或使用 try-with-resources (Java 7+) 確保 Connection、Statement、ResultSet 正確關閉,避免連線洩漏。
  • 安全性:生產環境切勿硬編碼帳號密碼,應使用連線池(如 HikariCP、Druid)並從設定檔或環境變數讀取敏感資訊。

五、進階:使用連線池優化效能

頻繁建立/關閉實體連線開銷極大。生產環境強烈建議整合連線池框架(如 HikariCP),配合 Spring 或獨立使用,可大幅提升吞吐量與穩定性。配置範例:

// HikariCP 配置範例 (application.properties)
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
spring.datasource.hikari.username=root
spring.datasource.hikari.password=secret
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5

結語

掌握 JDBC 連線基礎是 Java 後端開發的入門必修課。雖然現代框架(Spring Data JPA、MyBatis 等)已將底層細節封裝,但理解驅動載入、連線建立、異常處理與資源釋放的核心流程,對於除錯、效能調優與架構設計仍具關鍵價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved