資訊系統開發離不開資料庫存取。近期接手專案採用 Java 開發,我負責資料層設計與編碼,為提高程式碼重用性與開發效率,開發一套通用的資料庫連線與基本操作類別庫,於 MIS 系統開發中具參考價值,現整理分享。
ConnectionFactory 實作 javax.sql.DataSource 介面,封裝資料庫連線參數(使用者、密碼、驅動程式、URL)與連線管理邏輯。核心方法 getNewConnection() 載入驅動並建立新連線;getConnection() 檢查現有連線有效性,失效則重建;另提供帶認證參數的多載版本。未實作的 DataSource 方法(日誌、逾時)暫留空白。
專案採用 SQL Server 2000,實作 SqlServerConnectionFactory 繼承基礎工廠。建構子接受主機、埠號、資料庫名稱、帳號密碼,內部組裝 JDBC URL(jdbc:microsoft:sqlserver://host:port;DatabaseName=db)。包含主機名稱正規化(支援 localhost、IP、去除前綴)與埠號預設值(1433)處理邏輯。
JdbcOdbcConnectionFactory 使用 sun.jdbc.odbc.JdbcOdbcDriver,透過 ODBC 資料源名稱(DSN)連線,適合需透過 ODBC 存取各類資料庫的情境。
DatabaseObject 封裝連線、Statement、ResultSet 與 MetaData 操作。建構子接受 ConnectionFactory(實作 DataSource),內部建立 Statement。提供核心方法:
getResultSet(String sql):執行查詢傳回 ResultSetgetResultSetMetaData(ResultSet) / getResultSetMetaData():取得中繼資料Execute(String spName):執行預存程序setConnectionFactory():設定連線工廠並初始化 StatementDbObject 繼承 DatabaseObject,預設使用 SQL Server 連線工廠(localhost:1433, TheSchool, sa, 空密碼),亦支援注入自訂工廠。專案資料層所有存取類別繼承此類,僅在一處設定連線,其他處無需涉及具體連線程式碼。
User 類別繼承 DbObject,示範呼叫 SQL Server 預存程序 sp_Accounts_TestPassword 驗證使用者密碼。使用 CallableStatement 設定輸入參數(userID、加密密碼)與輸出參數(回傳碼),依回傳值判斷密碼正確性。採用預存程序隔離 SQL 細節,提升維護彈性。
以上為學習與工作心得,拋磚引玉,歡迎指正以完善模組功能。