抽象工廠模式實現DB的封裝(續)

 

下午的時候說要用抽象工廠模式封裝DB,但是由於晚上電腦出了點問題,所以當時沒有貼出代碼,現在電腦已經恢復正常,我就把抽象工廠模式封裝DB的代碼貼出來,供大家參考和點評。

DB.java

 

package com.gogofun.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 抽象工廠模式的抽象類
* @author GogoFun
*
*/
public abstract class DB {
public static PreparedStatement pstmt = null;
//外部獲取驅動字符串
public abstract String getDriverString();
//該方法連接本地服務器,默認端口
public abstract Connection getConnection(String dbName,
String dbUser, String dbPassword);
//該方法連接指定IP服務器,默認端口
public abstract Connection getConnection(String dbIp, String dbName,
String dbUser, String dbPassword);
//該方法連接本地服務器,指定端口
/*public abstract Connection getConnection(String dbPort,String dbName,
String dbUser, String dbPassword);*/
//該方法連接指定IP服務器,指定端口
public abstract Connection getConnection(String dbIp,String dbPort,String dbName,
String dbUser, String dbPassword);
//執行一條SQL Query語句
public static ResultSet executeQuery(Connection conn,String sqlQ) {
if((conn == null)|| (sqlQ == null)) {
return null;
}
try {
pstmt = conn.prepareStatement(sqlQ);
return pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
close(pstmt);
return null;
}
}
//執行一條ParepredStatement For Query
public static ResultSet executeQuery(Connection conn,PreparedStatement pstmt) {
if((conn == null)|| (pstmt == null)) {
return null;
}
try {
return pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
//執行一條SQL Update語句
public static boolean executeUpdate(Connection conn,String sqlU) {
if((conn == null)|| (sqlU == null)) {
return false;
}
try {
pstmt = conn.prepareStatement(sqlU);
pstmt.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
close(pstmt);
return false;
}
}
//執行一條ParepredStatement For Update
public static boolean executeUpdate(Connection conn,PreparedStatement pstmt) {
if((conn == null)|| (pstmt == null)) {
return false;
}
try {
pstmt.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
//關閉連接
public static boolean close (Connection conn) {
try {
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
//關閉語句
public static boolean close (Statement stmt) {
try {
if(stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
//關閉結果集
public static boolean close (ResultSet rs) {
try {
if(rs != null) {
rs.close();
rs = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
}

 

MysqlDB.java

package com.gogofun.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MysqlDB extends DB {
private static String driverString = "com.mysql.jdbc.Driver";
private static String connString = "jdbc:mysql://";
private static boolean isInit = false;
private static void init() {
try {
Class.forName(driverString);
isInit = true;
} catch (ClassNotFoundException e) {
e.printStackTrace();
isInit = false;
}
}
@Override
public String getDriverString() {
return driverString;
}
@Override
public Connection getConnection(String dbName, String dbUser,
String dbPassword) {
if (!isInit) {
init();
}
String connStr = connString + "localhost:3306/" + dbName + "?user=" + dbUser
+ "&password=" + dbPassword;
try {
return DriverManager.getConnection(connStr);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
@Override
public Connection getConnection(String dbIp, String dbName, String dbUser,
String dbPassword) {
if (!isInit) {
init();
}
String connStr = connString + dbIp + ":3306/" + dbName + "?user=" + dbUser
+ "&password=" + dbPassword;
try {
return DriverManager.getConnection(connStr);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
@Override
public Connection getConnection(String dbIp, String dbPort, String dbName,
String dbUser, String dbPassword) {
if (!isInit) {
init();
}
String connStr = connString + dbIp + ":" + dbPort + "/" + dbName + "?user=" + dbUser
+ "&password=" + dbPassword;
try {
return DriverManager.getConnection(connStr);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}

 

OracleDB.java

package com.gogofun.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class OracleDB extends DB {
private static String driverString = "oracle.jdbc.driver.OracleDriver";
private static String connString = "jdbc:oracle:this:@";
private static boolean isInit = false;
private static void init() {
try {
Class.forName(driverString);
isInit = true;
} catch (ClassNotFoundException e) {
e.printStackTrace();
isInit = false;
}
}
@Override
public String getDriverString() {
return driverString;
}
@Override
public Connection getConnection(String dbName, String dbUser,
String dbPassword) {
if (!isInit) {
init();
}
try {
String connStr = connString + "localhost:1521:" + dbName;
return DriverManager.getConnection(connStr,dbUser,dbPassword);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
@Override
public Connection getConnection(String dbIp, String dbName, String dbUser,
String dbPassword) {
if (!isInit) {
init();
}
try {
String connStr = connString + dbIp + ":1521:" + dbName;
return DriverManager.getConnection(connStr,dbUser,dbPassword);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
@Override
public Connection getConnection(String dbIp, String dbPort, String dbName,
String dbUser, String dbPassword) {
if (!isInit) {
init();
}
try {
String connStr = connString + dbIp + ":" + dbPort +":" + dbName;
return DriverManager.getConnection(connStr,dbUser,dbPassword);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章