本文介紹一個名為 odbc 的 JavaBean,封裝了資料庫連線、查詢、更新、分頁、中文編碼轉換、HTML 過濾等常用功能,適合快速開發資料庫應用。
package bbs;
import java.sql.*;
import java.lang.*;
import java.io.*;
import java.util.*;
import sun.io.*;
public class odbc {
Connection sqlCon;
ResultSet rstSql;
Statement stmS;
String strCon;
String strSql;
boolean status;
long rowcount;
int page;
int pagesize;
long pagecount;
long firstrecord;
// ... 方法定義
}
connect():使用預設 DSN JSPbbs 連線。connect(String conName, String username, String passWord):自訂連線參數。皆採用 sun.jdbc.odbc.JdbcOdbcDriver,成功回傳 true,失敗回傳 false 並設定 status。
public boolean execute(String s) {
// 執行 INSERT、UPDATE、DELETE 等
this.stmS = this.sqlCon.createStatement();
this.stmS.executeUpdate(s);
return true;
}
query(String s):執行查詢,計算總筆數 rowcount,重新取得 ResultSet。nextrecord():游標前移。getstring(String s)、getint(String s):依欄位名取得字串或整數。getrowcount()、getpagecount():取得總筆數與總頁數。public boolean setpage(int size, int no) {
this.pagesize = size;
this.page = no;
this.pagecount = Math.round((this.rowcount - 1) / this.pagesize) + 1;
this.firstrecord = this.pagesize * (this.page - 1);
// 移動游標至該頁首筆
for (int i = 0; i < this.firstrecord; i++) {
if (!this.nextrecord()) break;
}
return true;
}
readChinese(String s):從資料庫讀取時,將 GB2312 轉為 ISO-8859-1。writeChinese(String s):寫入資料庫前,將字串轉為 GB2312 位元組陣列再還原字串。replace(String con, String tag, String rep):全域取代。listValue(String con, String tag):依分隔符分割回傳 Vector。public String Htmlencode(String s) {
String temp = replace(s, "<", "<");
temp = replace(temp, ">", ">");
temp = replace(temp, "'", "'");
temp = replace(temp, "\"", """);
temp = replace(temp, " ", " ");
temp = replace(temp, "\n", "
");
return temp;
}
getstatus():回傳上一次操作狀態。close():關閉 Connection、ResultSet、Statement。此類別雖功能豐富,但採用較舊的 JDBC-ODBC Bridge 且未使用連線池,適合學習或小型專案。生產環境建議改用 DataSource 與連線池(如 HikariCP),並採用 PreparedStatement 防止 SQL 注入。