本文展示如何在 Eclipse IDE 中使用 JDBC 連接 Microsoft SQL Server 2005,構建一個完整的 Swing 圖形介面應用程式,實現學生資料表的增、刪、改、查(CRUD)操作。專案包含資料庫連接、表格顯示、彈出對話框輸入等核心功能。
public class Data extends JFrame implements ActionListener {
// 元件宣告
JButton add, select, del, update;
JTable table;
Object[][] body = new Object[50][5];
String[] fields = {"sno","sname","sex","age","dept"};
Connection conn;
Statement st;
ResultSet rs;
JTabbedPane tp;
// ...
}
public void connection() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=XSGL";
conn = DriverManager.getConnection(url, "sa", "123456");
st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
} catch (Exception ex) {
System.out.print("連接錯誤!");
}
}
注意:驅動類別名稱需確認拼寫正確(原代碼中 "SQLServerDrive" 缺少尾部 "r")。
透過 actionPerformed 方法分發按鈕事件:
SELECT * FROM S 並刷新 JTablepublic void filltable(String sql) {
try {
// 清空緩存陣列
for (int x = 0; x < body.length; x++) Arrays.fill(body[x], null);
int i = 0;
rs = st.executeQuery(sql);
while (rs.next()) {
body[i][0] = rs.getString("SNO");
body[i][1] = rs.getString("SNAME");
body[i][2] = rs.getString("SEX");
body[i][3] = rs.getString("AGE");
body[i][4] = rs.getString("DEPT");
i++;
}
this.repaint();
} catch (SQLException ex) { ex.printStackTrace(); }
}
原代碼直接拼接 SQL 字串,存在注入風險。建議改用 PreparedStatement:
String sql = "INSERT INTO s VALUES (?, ?, ?, ?, ?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, nsno);
pst.setString(2, nName);
// ...
pst.executeUpdate();
在 finally 區塊或使用 try-with-resources (JDK 7+) 確保 Connection、Statement、ResultSet 正確關閉,避免連線洩漏。
DefaultTableModel 替代二維陣列,動態調整行數此範例展示了 Java Swing 搭配 JDBC 實現桌面端資料庫操作的基本模式。實際專案中建議採用分層架構(DAO/Service/UI),引入連線池與 ORM 框架(如 MyBatis/Hibernate)提升可維護性與擴展性。