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 的資料庫。
mydatawuzi (物資編號、物資名稱、規格型號、類別、計量單位、數量、單價、金額、時間)wzgl,選擇目標伺服器mydataimport 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
執行後在文字框輸入物資編號,點擊「查詢」即顯示符合資料。
try-with-resources 確保 Connection/Statement/ResultSet 正確關閉PreparedStatement 而非字串拼接本範例僅示範查詢 (SELECT),同樣架構可擴充:
INSERT INTO wuzi VALUES (...)UPDATE wuzi SET 數量=? WHERE 物資編號=?DELETE FROM wuzi WHERE 物資編號=?TOP 或 ROW_NUMBER() 實作分頁