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

JavaBean 封裝 SQL Server 資料庫連線工具類完整實作

     編輯:Java 相關知識

前言

將資料庫連線邏輯封裝為 JavaBean,可在 JSP、Servlet 中透過標籤或依賴注入輕鬆存取資料,實現資料存取層與業務邏輯層分離。本文提供一個以 SQL Server (透過 ODBC) 為例的完整連線 Bean 實作。

資料庫設定資訊

完整原始碼:conndb.java

package conn.db;

import java.sql.*;

public class conndb {
    private Connection conn;
    private ResultSet rs;
    private int count;

    // 建構子:載入 JDBC-ODBC 橋接驅動
    public conndb() {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (Exception ex) {
            // 建議記錄日誌而非忽略
        }
    }

    // 執行查詢:回傳可捲動、可更新的 ResultSet
    public ResultSet executeQuery(String sql) {
        try {
            conn = DriverManager.getConnection("Jdbc:Odbc:mysql", "dxaw", "123");
            Statement stat = conn.createStatement(
                ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE
            );
            rs = stat.executeQuery(sql);
        } catch (Exception ex1) {
            // 建議拋出自訂例外或記錄錯誤
        }
        return rs;
    }

    // 執行更新:INSERT、UPDATE、DELETE
    public void executeUpdate(String sql) {
        try {
            conn = DriverManager.getConnection("Jdbc:Odbc:mysql", "dxaw", "123");
            Statement stat = conn.createStatement();
            // 注意:此處應使用 executeUpdate 而非 executeQuery
            stat.executeUpdate(sql);
        } catch (Exception ex2) {
            // 錯誤處理
        }
    }
}

關鍵技術點解析

1. JDBC-ODBC 橋接驅動

sun.jdbc.odbc.JdbcOdbcDriver 是 JDK 內建的橋接驅動,透過 ODBC 連接各類資料庫。注意:Java 8 起已移除此驅動,現代專案建議使用原生 JDBC 驅動(如 Microsoft JDBC Driver for SQL Server)。

2. ResultSet 類型與並行模式

  • TYPE_SCROLL_SENSITIVE:可捲動、對資料變更敏感
  • CONCUR_UPDATABLE:ResultSet 可直接更新資料庫

3. 部署方式

  1. 編譯類別檔
  2. 放置於 Web 應用的 WEB-INF/classes/conn/db/ 目錄
  3. JSP 頁面引入:<jsp:useBean id="db" class="conn.db.conndb" scope="page" />

實務改進建議(重要)

⚠️ 此範例存在嚴重問題,生產環境請務必改進:

  • 資源洩漏:Connection、Statement、ResultSet 未在 finally 關閉
  • 例外吞沒:catch 區塊為空,導致錯誤無法追蹤
  • 硬編碼認證:帳密寫死在程式碼,應外部化設定
  • SQL 注入風險:直接拼接 SQL 字串,應使用 PreparedStatement
  • 執行更新錯誤:executeUpdate 方法中誤用 executeQuery
  • 執行緒不安全:共用連線物件,多執行緒環境下會衝突

改進版架構建議

public class DatabaseBean {
    private DataSource dataSource; // 透過 JNDI 注入
    
    public void setDataSource(DataSource ds) { this.dataSource = ds; }
    
    public List<Map<String, Object>> query(String sql, Object... params) {
        try (Connection conn = dataSource.getConnection();
             PreparedStatement ps = conn.prepareStatement(sql)) {
            // 設定參數、執行查詢、轉換為 List
        }
    }
    
    public int update(String sql, Object... params) {
        // 使用 PreparedStatement 執行更新
    }
}

結語

雖然原始範例展示了 JavaBean 封裝資料庫邏輯的基本概念,但實務開發中必須解決資源管理、安全性、執行緒安全等核心問題。建議採用成熟框架(Spring JDBC、MyBatis、Hibernate)或至少導入連線池與 PreparedStatement 模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
項目值
ODBC 資料來源名稱 (DSN)mysql
使用者名稱dxaw
密碼123