亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > 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();
}
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美精品中文字幕在线| 精品国产乱码久久久久久虫虫漫画| 亚洲变态欧美另类捆绑| 精品免费在线视频| 国产91网红主播在线观看| 美乳少妇欧美精品| 国产精品欧美日韩久久| 国产一区二区三区视频在线观看| 国产欧美欧洲在线观看| 日韩成人在线电影网| 欧美性猛交xxxx久久久| 亚洲电影免费观看高清完整版在线观看| 亚洲国产精品悠悠久久琪琪| 欧美在线一区二区视频| 国产精品成人免费电影| 国产精品一区二区久久久久| 亚洲香蕉av在线一区二区三区| 91精品国产高清久久久久久久久| 成人福利网站在线观看11| 国产精品久久久久久久久久新婚| 欧美中文在线免费| 欧美美女操人视频| 成人字幕网zmw| 伊人久久精品视频| 日韩小视频网址| 国产美女搞久久| 亚洲成人精品视频在线观看| 欧美精品在线网站| 日本久久久久亚洲中字幕| 美女少妇精品视频| 色老头一区二区三区在线观看| 成人妇女淫片aaaa视频| 色噜噜久久综合伊人一本| 成人高清视频观看www| 欧美性感美女h网站在线观看免费| 国产va免费精品高清在线| 中文字幕日韩在线视频| 久久九九国产精品怡红院| 秋霞成人午夜鲁丝一区二区三区| 欧美高清在线视频观看不卡| 中文字幕九色91在线| 国产aaa精品| 成人黄色片网站| 国产精品亚洲欧美导航| 精品人伦一区二区三区蜜桃免费| 色阁综合伊人av| 欧美日韩国产在线播放| 亚洲日本欧美中文幕| 久久久久久一区二区三区| 国产亚洲aⅴaaaaaa毛片| 久久国产精品99国产精| 色悠悠久久久久| 亚洲一区av在线播放| 大胆人体色综合| 亚洲成av人片在线观看香蕉| 色狠狠久久aa北条麻妃| 亚洲最大福利网| 欧美国产乱视频| 日韩av大片免费看| 日韩**中文字幕毛片| 日韩在线观看免费全| 亚洲精品国产精品自产a区红杏吧| 欧美日韩在线第一页| 欧美电影免费播放| 成人久久久久久久| 亚洲欧洲偷拍精品| 国产精国产精品| 日韩美女毛茸茸| 在线观看不卡av| 日韩成人av在线播放| 欧美成人在线免费视频| 久久精品影视伊人网| 国产精品爽爽爽爽爽爽在线观看| 欧美性受xxxx白人性爽| 日韩电影中文 亚洲精品乱码| 国产精品日韩欧美大师| 亚洲成人久久一区| 中文欧美在线视频| 久久精品国产欧美亚洲人人爽| 日韩a**站在线观看| 亚洲成人网久久久| 97婷婷大伊香蕉精品视频| 欧美激情精品久久久| 亚洲高清免费观看高清完整版| 亚洲精品98久久久久久中文字幕| 国产日韩欧美在线| 成人淫片在线看| 久久久99久久精品女同性| 日本中文字幕不卡免费| 91网站免费看| 成人在线国产精品| 国产成人激情小视频| 91在线观看免费高清完整版在线观看| 日韩av网址在线观看| 国产精品扒开腿做爽爽爽的视频| 国模精品视频一区二区三区| 久久久在线免费观看| 国产精品成人在线| 亚洲欧美日韩天堂| 操人视频在线观看欧美| 亚洲成人精品久久| 国产精品国产三级国产aⅴ浪潮| 裸体女人亚洲精品一区| 91久热免费在线视频| 欧美乱妇高清无乱码| 国模精品一区二区三区色天香| 国产精品永久免费在线| 国产精品第10页| 日韩精品视频免费专区在线播放| 国产69精品99久久久久久宅男| 欧美日韩国产精品一区二区三区四区| 日韩美女激情视频| 亚洲欧美自拍一区| 97久久精品国产| 亚洲人成亚洲人成在线观看| 亚洲国产日韩欧美在线图片| 中文字幕视频一区二区在线有码| 亚洲视频在线免费观看| 国产精品视频最多的网站| 91在线精品视频| 成人淫片在线看| 久久视频在线直播| www.日韩.com| 国产乱人伦真实精品视频| 国产亚洲欧美日韩精品| 国产成人精品电影久久久| 国产精品成人品| 日本午夜精品理论片a级appf发布| 国产精品久久久久久久一区探花| 欧美福利视频在线| 亚洲激情视频在线播放| 精品国产区一区二区三区在线观看| 欧美成aaa人片在线观看蜜臀| 欧美日韩午夜激情| 黄色一区二区三区| 国产成人欧美在线观看| 欧美影院在线播放| 草民午夜欧美限制a级福利片| 日韩欧美在线视频免费观看| 亚洲黄一区二区| 亚洲级视频在线观看免费1级| 岛国av一区二区在线在线观看| 亚洲大胆人体在线| 欧美一级在线播放| 国产欧美日韩视频| 国产拍精品一二三| 国产成人久久久| 九九九热精品免费视频观看网站| 狠狠躁夜夜躁久久躁别揉| 国内揄拍国内精品少妇国语| 精品欧美一区二区三区| 青青a在线精品免费观看| 国产亚洲视频中文字幕视频| 日韩欧美国产黄色| 国产91在线播放九色快色| 久久久中精品2020中文| 热久久视久久精品18亚洲精品| 97超级碰碰碰久久久| 亚洲国产免费av| 亚洲第一国产精品| 91精品久久久久久综合乱菊| 亚洲欧美一区二区三区情侣bbw| 精品国产欧美一区二区三区成人| 国模精品视频一区二区|