国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一個簡單實用的數據庫操作框架

2019-11-17 06:11:40
字體:
來源:轉載
供稿:網友

  前言
  這個小小的數據庫操作封裝框架是參考IBM開發網上的兩篇文章并在其基礎上擴充了一些功能而得到的。所以首先要感謝兩篇文章的作者。

  學習JDBC以來一直想實現一個簡單的封裝來方便編程但是由于水平有限一直沒有較好的辦法,看了IBM開發網上的兩篇文章以后感覺作者的設計思想很好一定能擴充成一個實用的JDBC封裝。所以我在文章提供的源碼基礎上加了一些功能這些功能包括支持多種數據類型,處理了空值,利用反射方便的在Row對象和值對象之間進行轉換,還有加了一個我自認為通用的DAO類來方便用戶的操作。
  我把源碼提供出來有兩個目的一個是希望能幫助比我還初學的初學者熟悉JDBC,另外就是請各位高手不吝賜教,改進程序中的錯誤假如能將你們的對JDBC的封裝方法提供出來那就更好了(不要說你們只用EJB或者Hibernate,JDO什么的?)。

  IBM開發網的那兩篇文章分別是《一個簡單的 JDBC 包裝器》《對一個簡單的 JDBC 包裝器的擴展及應用》,我的郵箱是xsimple2003@yahoo.com.cn有事請與我聯系。

  設計思想

  把DBMS抽象成類Database,這個類負責治理數據庫連接以及提供表對象。

  把數據庫中的一張或多張表抽象成類Table,這個類中提供對表的添加,修改,刪除的JDBC封裝。

  將數據庫表中的一條記錄抽象成類Row,這個類用HashMap保存關系數據庫中表格中一行數據的字段名和值并提供一些相關操作。另外這個類還提供了兩個靜態方法用于在Row對象和ValueObject之間進行方便的轉換。

  把對個Row的集合抽象成RowSet,這個類中用一個vector把多個Row對象保存起來并提供一些相關操作。

  代碼分析

  由于已經給出源碼所以我只對代碼中要害的和需要注重的地方加以說明,大家可以執行源碼一邊演示一邊體會。

  Database類源碼如下:


  package com.gdrj.util.database;
  import java.sql.*;
  import javax.sql.*;
  import com.gdrj.util.servicelocator.*;
  public class Database {
  /**
  * 這個數據庫連接成員只有在與數據庫直接建立連接的情況下是有效的
  */
  PRivate Connection conn = null;
  /**
  * 當這個參數有效時,表明程序是直接與數據庫建立的連接而不是從連接池里取得連接
  */
  private String url, user, passWord;
  /**
  * 當這個參數有效時,表明程序是從連接池里取得連接。
  */
  private String datasource;
  /**
  * 用數據庫地址,用戶名,密碼初始化數據庫對象,這個構造器用于程序是直接
  * 與數據庫建立連接的情況。
  * @param url
  * @param user
  * @param password
  */








  public Database(String url, String user, String password) {
  this.url = url;
  this.user = user;
  this.password = password;
  }

  /**
  * 用JNDI數據源名初始化數據庫對象,這個構造器用于從連接池取數據庫連接的情況。
  * @param datasource
  */
  public Database(String datasource) {
  this.datasource = datasource;
  }

  /**
  * 得到數據庫連接,對于是否從連接池里取連接做了自動處理即根據用戶調用了哪個構造器
  * 來判定是否直接與數據庫建立連接還是從連接池里取連接。
  * 對于用戶來說不用考慮程序是從那里取得連接,他只管正確的初始化數據庫對象。
  * @return
  * @throws SQLException
  */
  public Connection getConnection() throws Exception {
  if (datasource == null) { //直接與數據庫建立連接
  if (conn == null) {
  conn = DriverManager.getConnection(url, user, password);
  }
  }
  else { //從應用服務器的連接池里取得連接


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陵川县| 武定县| 长汀县| 赤水市| 乌拉特前旗| 荔浦县| 桂平市| 丰原市| 巴林左旗| 马龙县| 固始县| 通城县| 金乡县| 三原县| 治县。| 文水县| 岑巩县| 大渡口区| 平远县| 涟水县| 漾濞| 鲁山县| 天柱县| 旬邑县| 静乐县| 滨海县| 陆河县| 宝丰县| 永州市| 茂名市| 和顺县| 阿鲁科尔沁旗| 赤城县| 彭山县| 二连浩特市| 稷山县| 商河县| 政和县| 墨竹工卡县| 富源县| 台北县|