麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

封裝了一個Java數據庫訪問管理類

2019-11-26 16:19:46
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

package com.groundhog.codingmouse;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 數據庫管理類
* @author CodingMouse
* 2009.2.20
*/
public final class DBManager {
/**
* 數據庫連接對象
*/
private Connection dbConnection = null;
/**
* 數據庫命令執行對象
*/
private PreparedStatement preStatement = null;
/**
* 結果集對象
*/
private ResultSet rsSet = null;
/**
* 數據庫驅動版本號
*/
private static String driverVersion = null;
/**
* 數據庫服務器登錄用戶名和密碼字符串常量(默認值均
為'sa')
*/
private static String databaseUser = "sa";
private static String databasePassword = "sa";
/**
* 數據庫驅動完整類名字符串常量
*/
private static final String
DRIVER_CLASS_SQLSERVER2000 =
"com.microsoft.jdbc.sqlserver.SQLServerDriver"; // SQL
Server 2000 直連
private static final String
DRIVER_CLASS_SQLSERVER2005 =
"com.microsoft.sqlserver.jdbc.SQLServerDriver"; // SQL
Server 2005 直連
private static final String
DRIVER_CLASS_BRIDGECONNECT = "sun.jdbc.odbc.JdbcOdbcDriver";
// ODBC 橋連
/**
* 數據庫連接字符串常量
*/
private static final String
DATABASE_URL_SQLSERVER2000 =
"jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=stuD
B"; // SQL Server 2000 直連
private static final String
DATABASE_URL_SQLSERVER2005 =
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName=stuDB";
// SQL Server 2005 直連
private static final String
DATABASE_URL_BRIDGECONNECT = "jdbc:odbc:stuDBSource";
// ODBC 橋連
/**
* 定義類自身的實例靜態變量(作用于單例[件]模式的應用)
*/
private static DBManager connectionManager = null;
/**
* 私有化默認構造(作用于單例[件]模式的應用,防止類被直
接使用new關鍵字實例化)
*/
private DBManager() {
super();
}
/**
* 獲取數據庫連接管理類實例的方法(單例[件]模式的應用)
* @param version 數據庫驅動版本號,取值:(version =
2000 | version = 2005 | version = odbc)
* @param user 數據庫服務器登錄用戶名
* @param password 數據庫服務器登錄密碼
* @return 數據庫連接管理對象
* @throws Exception 參數錯誤異常
*/
public static DBManager getInstance(
String version,
String user,
String password)
throws Exception {
if (!(version == "2000" || version == "2005"
|| version == "odbc")) {
throw new Exception("數據庫驅動版本號
不正確,取值只能是“2000/2005/odbc”!");
}
// 保存數據庫驅動版本號
driverVersion = version;
if (user == null || user.equals("")) {
throw new Exception("數據庫服務器登錄
用戶名不能為空!");
}
// 保存數據庫服務器登錄用戶名和密碼
databaseUser = user;
databasePassword = password;
// 應用單例[件]模式確保類本身只有一個實例
if (connectionManager == null) {
connectionManager = new DBManager();
}
// 返回類本身的實例
return connectionManager;
}
/**
* 獲取數據庫連接的方法
* @return 數據庫連接對象
*/
private Connection getConnection() {
try {
Class.forName(
driverVersion ==
"2000"
?
DRIVER_CLASS_SQLSERVER2000
: (driverVersion ==
"2005"
?
DRIVER_CLASS_SQLSERVER2005
:
DRIVER_CLASS_BRIDGECONNECT));
this.dbConnection =
DriverManager.getConnection(
driverVersion ==
"2000"
?
DATABASE_URL_SQLSERVER2000
: (driverVersion ==
"2005"
?
DATABASE_URL_SQLSERVER2005
:
DATABASE_URL_BRIDGECONNECT),
databaseUser,
databasePassword);
} catch (ClassNotFoundException ex) {
System.err.println("未找到SQL Server
" + driverVersion + "數據庫驅動類:" + ex.getMessage());
// 在控制臺輸出異常堆棧信息
// ex.printStackTrace();
} catch (Exception ex) {
System.err.println("獲取數據庫連接錯
誤:" + ex.getMessage());
// 在控制臺輸出異常堆棧信息
// ex.printStackTrace();
}
// 返回數據庫連接對象
return this.dbConnection;
}
/**
* 獲取數據庫命令執行對象的方法
* @param sql 要執行的SQL命令拼裝語句字符串
* @return 數據庫命令執行對象
*/
private PreparedStatement getPreparedStatement
(String sql) {
try {
// 根據獲取的數據庫連接對象創建數據庫
命令執行對象
this.preStatement = getConnection
().prepareStatement(sql);
} catch (Exception ex) {
System.err.println("獲取數據庫命令執
行對象錯誤:" + ex.getMessage());
// 在控制臺輸出異常堆棧信息
// ex.printStackTrace();
}
// 返回數據庫命令執行對象
return this.preStatement;
}
/**
* 執行更新語句(Insert|Update|Delete)
* @param sql 要執行的SQL命令拼裝語句字符串
* @return 受影響的行數
*/
public int executeUpdate(String sql){
try {
// 置空結果集對象的原有內容
this.rsSet = null;
// 執行語句并返回受影響行數
return this.getPreparedStatement
(sql).executeUpdate();
} catch (SQLException e) {
System.err.println("更新數據錯誤:" +
e.getMessage());
return 0;
}finally{
// 關閉數據庫連接資源
closeDBResource();
}
}
/**
* 執行查詢語句(Select)
* @param sql 要執行的SQL命令拼裝語句字符串
* @return 查詢后的結果集對象
*/
public ResultSet executeQuery(String sql){
try {
// 置空結果集對象的原有內容
this.rsSet = null;
// 執行sql語句獲得結果集
this.rsSet =
this.getPreparedStatement(sql).executeQuery();
} catch (SQLException e) {
System.err.println("查詢數據錯誤:" +
e.getMessage());
}
// 返回結果集對象
return this.rsSet;
}
/**
* 獲取執行指定sql語句后的返回結果集的記錄條數
* @param sql 要執行的SQL命令拼裝語句字符串
* @return 查詢結果得到的記錄條數
*/
public int getResultSetCount(String sql) {
// 保存得到指定的sql語句執行后返回記錄行數的計數器變量
int count = 0;
try {
// 置空結果集對象的原有內容
this.rsSet = null;
// 執行sql語句獲得結果集
this.rsSet = this.getPreparedStatement
(sql).executeQuery();
// 遍歷結果集并累加計數器
while (this.rsSet.next()) {
count++;
}
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}
/**
* 關閉數據庫連接資源(包括結果集對象、命令執行對象、連
接對象)
*/
public void closeDBResource() {
try {
closeResultSet();
closePreparedStatement();
closeConnection();
} catch (SQLException sqlEx) {
System.err.println(sqlEx.getMessage
());
// 在控制臺輸出異常堆棧信息
// sqlEx.printStackTrace();
}
}
/**
* 關閉結果集對象的方法
* @throws SQLException
*/
private void closeResultSet() throws SQLException {
try {
if (this.rsSet != null) {
this.rsSet.close();
this.rsSet = null;
}
} catch (SQLException sqlEx) {
throw new SQLException("關閉結果集對
象錯誤:" + sqlEx.getMessage());
// 在控制臺輸出異常堆棧信息
// sqlEx.printStackTrace();
}
}
/**
* 關閉數據庫命令執行對象的方法
* @throws SQLException
*/
private void closePreparedStatement() throws
SQLException {
try {
if (this.preStatement != null) {
this.preStatement.close();
this.preStatement = null;
}
} catch (SQLException sqlEx) {
throw new SQLException("關閉數據庫命
令執行對象錯誤:" + sqlEx.getMessage());
// 在控制臺輸出異常堆棧信息
// sqlEx.printStackTrace();
}
}
/**
* 關閉數據庫連接的方法
* @throws SQLException
*/
private void closeConnection() throws SQLException {
try {
if (this.dbConnection != null && (!
this.dbConnection.isClosed())) {
this.dbConnection.close();
}
} catch (SQLException sqlEx) {
throw new SQLException("關閉數據庫連
接錯誤:" + sqlEx.getMessage());
// 在控制臺輸出異常堆棧信息
// sqlEx.printStackTrace();
}
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: xx53xx| 国产精品久久久久久久久久大牛 | 国产在线精品一区二区夜色 | 91一区二区三区久久久久国产乱 | 久久99精品久久久久久小说 | 色综合精品 | 久久影城 | 亚洲欧美国产精品va在线观看 | 今井夏帆av一区二区 | 欧美精品一区二区久久 | 久久久久久久久国产 | 97超碰资源站 | 欧美三级毛片 | 黄色毛片a级| 国产一级做a爰片在线看 | free性欧美hd另类 | 嫩呦国产一区二区三区av | 久久精品亚洲欧美日韩精品中文字幕 | 免费a级观看 | 欧美a在线看 | 九九色网站| 久久久久久久久久性 | 97青青| 性感美女一级毛片 | 欧美日韩在线视频观看 | 在线亚洲观看 | 可以免费看的av | 久久免费视频7 | 免费a视频在线观看 | 羞羞的视频免费在线观看 | 国产亚洲精品久久久久久网站 | 欧洲成人综合网 | 少妇一级淫片免费放正片 | 久久成人激情视频 | 91在线视频网址 | 久久成人免费观看 | 成人h视频在线 | 成人福利视频网站 | 日本a级免费 | 少妇一级淫片高潮流水电影 | 在线观看免费视频麻豆 |