用簡單Factory 方法設計的資料庫查詢(JAVA代碼實現)

來源:互聯網
上載者:User

 一共有六個類,其中資料庫主類為DbConn.java,子類為DbQuery.java,DbUpdate.java;工廠類為:DbStore.java,DbQueryStore.java,DbUpdateStore.java

 

DbConn.java代碼:

  1. package com.test.db;
  2. import com.test.util.BaseDateSource;
  3. import javax.sql.DataSource;
  4. import javax.naming.Context;
  5. import javax.naming.InitialContext;
  6. import javax.naming.NamingException;
  7. import java.sql.Connection;
  8. import java.sql.Statement;
  9. import java.sql.PreparedStatement;
  10. import java.sql.ResultSet;
  11. import java.sql.SQLException;
  12. public class DbConn {
  13.   //聲明資料庫Connection,Statement和PreparedStatement
  14.   Connection con;
  15.   Statement stmt;
  16.   PreparedStatement psmt;
  17.   //獲得資料庫的串連
  18.   public void getConn() throws NamingException, SQLException {
  19.     Context ctx = new InitialContext();
  20.     String strLookup = BaseDateSource.judi_sql;
  21.     DataSource ds = (DataSource) ctx.lookup(strLookup);
  22.     con = ds.getConnection();
  23.     System.out.println("資料庫連接已開啟");
  24.   }
  25.   //處理資料庫的SQL語句,此處為空白方法,子類重寫該方法
  26.   public void sqlProcess(String sql) {}
  27.   //處理資料庫的SQL語句,此處為空白方法,子類複寫該方法
  28.   public void sqlProcess(String username, String password) {}
  29.   public ResultSet getRs() {
  30.     return null;
  31.   }
  32.   //關閉資料庫連接
  33.   public void closeCon() throws SQLException {
  34.     con.close();
  35.     System.out.println("資料庫連接已關閉");
  36.   }
  37. }

DbQuery.java代碼:

  1. package com.test.db;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. public class DbQuery
  5.     extends DbConn {
  6.   private ResultSet rs;
  7.   //此處繼承自DbConn.java的sqlProcess的抽象方法
  8.   public void sqlProcess(String sql) {
  9.     try {
  10.       stmt = con.createStatement();
  11.       rs = stmt.executeQuery(sql);
  12.       System.out.println("查詢資料庫成功" + sql);
  13.     }
  14.     catch (SQLException e) {
  15.       e.printStackTrace();
  16.     }
  17.   }
  18.   public ResultSet getRs() {
  19.     System.out.println("返回結果集");
  20.     return rs;
  21.   }
  22.   public void closeCon() throws SQLException {
  23.     rs.close();
  24.     con.close();
  25.     System.out.println("結果集及資料庫連接已關閉");
  26.   }
  27. }

DbUpdate.java代碼:

  1. package com.test.db;
  2. import java.sql.*;
  3. public class DbUpdate
  4.     extends DbConn {
  5.   //此處繼承自DbConn.java的sqlProcess的抽象方法
  6.   public void sqlProcess(String sql) {
  7.     try {
  8.       stmt = con.createStatement();
  9.       stmt.executeUpdate(sql);
  10.       System.out.println("更新資料庫成功" + sql);
  11.     }
  12.     catch (SQLException e) {
  13.       e.printStackTrace();
  14.     }
  15.   }
  16. }

DbStore.java代碼:

  1. package com.test.dbstore;
  2. import com.test.db.DbConn;
  3. import javax.naming.NamingException;
  4. import java.sql.SQLException;
  5. public abstract class DbStore {
  6.   //聲明資料庫
  7.   DbConn dbc;
  8.   //訂購需要使用的資料庫查詢方法
  9.   public DbConn order(String sql) throws NamingException, SQLException {
  10.     //為DBC NEW子類
  11.     dbc = create();
  12.     //此處建立串連,統一建立
  13.     dbc.getConn();
  14.     //此處處理SQL語句,自動處理
  15.     dbc.sqlProcess(sql);
  16.     return dbc;
  17.   }
  18.   public DbConn order(String username, String password) throws NamingException,
  19.       SQLException {
  20.     //為DBC NEW子類
  21.     dbc = create();
  22.     //此處建立串連,統一建立
  23.     dbc.getConn();
  24.     //此處處理SQL語句,自動處理
  25.     dbc.sqlProcess(username, password);
  26.     return dbc;
  27.   }
  28.   //創造需要使用的資料庫查詢方法,子類繼承次抽象方法以返回NEW的子類
  29.   abstract DbConn create();
  30. }

DbQueryStore.java代碼:

  1. package com.test.dbstore;
  2. import com.test.db.*;
  3. public class DbQueryStore
  4.     extends DbStore {
  5. //此處繼承抽象方法
  6.   DbConn create() {
  7.     return new DbQuery();
  8.   }
  9. }

DbUpdateStore.java代碼:

  1. package com.test.dbstore;
  2. import com.test.db.DbConn;
  3. import com.test.db.DbUpdate;
  4. public class DbUpdateStore
  5.     extends DbStore {
  6.   //此處繼承抽象方法
  7.   DbConn create() {
  8.     return new DbUpdate();
  9.   }
  10. }

調用資料庫使用如下代碼:

DbStore ds = new DbUpdateStore();
DbConn dc = ds.order(sql);

dc.closeConn();

 

DbStore ds = new DbQueryStore();
DbConn dc = ds.order(sql);

ResultSet rs = dc.getRs()

dc.closeConn();

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.