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

Java 透過 JDBC-ODBC 橋接器存取 SQL Server 2000 資料庫實作教學

     編輯:Java 相關知識

前言

JDBC (Java Database Connectivity) 提供統一 API 存取多種關聯式資料庫。本文示範如何透過 JDBC-ODBC Bridge 讓 Java 應用程式連接 Microsoft SQL Server 2000,並建立簡易的 AWT 圖形介面查詢工具。

架構原理

Java App → JDBC API (java.sql) → JDBC Driver Manager → JDBC-ODBC Bridge → ODBC Driver → SQL Server 2000

JDBC-ODBC Bridge 將 JDBC 呼叫轉換為 ODBC 呼叫,使 Java 程式無需學習資料庫專用驅動程式即可存取任何支援 ODBC 的資料庫。

環境建置步驟

1. 建立資料庫與資料表

  • 啟動 SQL Server 企業管理員
  • 建立資料庫 mydata
  • 建立資料表 wuzi (物資編號、物資名稱、規格型號、類別、計量單位、數量、單價、金額、時間)

2. 設定 ODBC 系統資料來源 (System DSN)

  1. 控制台 → 管理工具 → 資料來源 (ODBC) → 系統 DSN → 新增
  2. 選擇 SQL Server 驅動程式
  3. 資料來源名稱:wzgl,選擇目標伺服器
  4. 驗證方式:Windows NT 整合驗證
  5. 預設資料庫:mydata
  6. 完成後點擊「測試資料來源」確認連線成功

Java 程式實作 (jdbc.java)

import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class jdbc {
    public static void main(String args[]) {
        GUI gui = new GUI();
        gui.pack();
    }
}

class GUI extends Frame implements ActionListener {
    TextArea text; Panel panel; TextField sno; Button btn;

    GUI() {
        super("物資情況查詢");
        setLayout(new BorderLayout());
        setBackground(Color.cyan);
        setVisible(true);
        
        text = new TextArea(); text.setEditable(false);
        btn = new Button("查詢");
        sno = new TextField(16);
        panel = new Panel();
        panel.add(new Label("輸入被查詢的物資編號:"));
        panel.add(sno); panel.add(btn);
        add("North", panel); add(text, "Center");
        btn.addActionListener(this);
        
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                setVisible(false); System.exit(0);
            }
        });
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == btn) {
            text.setText("查詢結果\n");
            try { Liststudent(); } catch (SQLException ex) { ex.printStackTrace(); }
        }
    }

    public void Liststudent() throws SQLException {
        String bh, mc, xh, lb, dw, sj; int sl; float dj, je;
        try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }
        catch (ClassNotFoundException ex) { ex.printStackTrace(); }
        
        Connection con = DriverManager.getConnection("jdbc:odbc:wzgl");
        Statement sql = con.createStatement();
        ResultSet rs = sql.executeQuery("select * from wuzi");
        
        while (rs.next()) {
            bh = rs.getString("物資編號"); mc = rs.getString("物資名稱");
            xh = rs.getString("規格型號"); lb = rs.getString("類別");
            dw = rs.getString("計量單位"); sl = rs.getInt("數量");
            dj = rs.getFloat("單價"); je = rs.getFloat("金額");
            sj = rs.getDate("時間").toString();
            
            if (bh.trim().equals(sno.getText().trim())) {
                text.append("\n物資編號 物資名稱 規格型號 類別 計量單位 數量 單價 金額 時間\n");
                text.append("\n" + bh + " " + mc + " " + xh + " " + lb + " " + dw + " " + sl + " " + dj + " " + je + " " + sj + "\n");
            }
        }
        rs.close(); sql.close(); con.close();
    }
}

編譯與執行

javac jdbc.java
java jdbc

執行後在文字框輸入物資編號,點擊「查詢」即顯示符合資料。

重要注意事項

  • JDBC-ODBC Bridge 已於 Java 8 移除,現代專案請改用廠商提供的 Type 4 純 Java 驅動程式 (如 Microsoft JDBC Driver for SQL Server、jTDS)
  • 資源管理:實務上應使用 try-with-resources 確保 Connection/Statement/ResultSet 正確關閉
  • SQL 注入防護:實務查詢應使用 PreparedStatement 而非字串拼接
  • 連線池:生產環境建議使用 HikariCP、DBCP 等連線池框架

擴充功能建議

本範例僅示範查詢 (SELECT),同樣架構可擴充:

  • 新增:INSERT INTO wuzi VALUES (...)
  • 修改:UPDATE wuzi SET 數量=? WHERE 物資編號=?
  • 刪除:DELETE FROM wuzi WHERE 物資編號=?
  • 分頁查詢:搭配 TOP 或 ROW_NUMBER() 實作分頁
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved