次のようにコードをコピーします。
パッケージ com.groundhog.codingmouse;
java.sql.Connectionをインポートします。
インポートjava.sql.DriverManager;
インポートjava.sql.PreparedStatement;
インポートjava.sql.ResultSet;
インポート java.sql.SQLException;
/**
* データベース管理クラス
* @author コーディングマウス
※2009.2.20
*/
パブリック最終クラス DBManager {
/**
* データベース接続オブジェクト
*/
プライベート接続 dbConnection = null;
/**
* データベースコマンド実行オブジェクト
*/
private PreparedStatement preStatement = null;
/**
* 結果セットオブジェクト
*/
プライベート ResultSet rsSet = null;
/**
* データベースドライバーのバージョン番号
*/
プライベート静的文字列 driverVersion = null;
/**
* データベースサーバーのログインユーザー名とパスワードの文字列定数 (デフォルト値は「sa」)
*/
プライベート静的文字列データベースユーザー = "sa";
プライベート静的文字列データベースパスワード = "sa";
/**
* データベースドライバーの完全なクラス名文字列定数
*/
プライベート静的最終文字列
DRIVER_CLASS_SQLSERVER2000 =
"com.microsoft.jdbc.sqlserver.SQLServerDriver";
サーバー2000直接接続
プライベート静的最終文字列
DRIVER_CLASS_SQLSERVER2005 =
"com.microsoft.sqlserver.jdbc.SQLServerDriver";
サーバー 2005 ダイレクト接続
プライベート静的最終文字列
DRIVER_CLASS_BRIDGECONNECT = "sun.jdbc.odbc.JdbcOdbcDriver";
// ODBCブリッジ接続
/**
* データベース接続文字列定数
*/
プライベート静的最終文字列
DATABASE_URL_SQLSERVER2000 =
「jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=stuD」
B"; // SQL Server 2000 直接接続
プライベート静的最終文字列
DATABASE_URL_SQLSERVER2005 =
"jdbc:sqlserver://127.0.0.1:1433;データベース名=stuDB";
// SQL Server 2005 直接接続
プライベート静的最終文字列
DATABASE_URL_BRIDGECONNECT = "jdbc:odbc:stuDBSource";
// ODBCブリッジ接続
/**
* クラス自体のインスタンス静的変数を定義します (シングルトン [ウェア] モード アプリケーションに適用されます)
*/
プライベート静的 DBManager connectionManager = null;
/**
* プライベート化されたデフォルト構造 (新しいキーワードを使用してクラスが直接インスタンス化されるのを防ぐために、シングルトン [ウェア] モード アプリケーションに適用されます)
*/
privateDBManager() {
素晴らしい();
}
/**
※データベース接続管理クラスインスタンスの取得方法(シングルトン[ウェア]モードの適用)
* @param version データベース ドライバーのバージョン番号、値: (version =
2000 | バージョン = 2005 | バージョン = odbc)
* @param user データベースサーバーのログインユーザー名
* @param パスワード データベースサーバーのログインパスワード
* @return データベース接続管理オブジェクト
* @throws Exception パラメータエラー例外
*/
public static DBManager getInstance(
文字列バージョン、
文字列ユーザー、
文字列パスワード)
例外をスローします {
if (!(バージョン == "2000" || バージョン == "2005"
|| バージョン == "odbc")) {
throw new Exception("データベース ドライバーのバージョン番号が正しくありません。値は "2000/2005/odbc" のみです!");
}
//データベースドライバーのバージョン番号を保存します
driverVersion = バージョン;
if (user == null || user.equals("")) {
throw new Exception("データベース サーバーのログイン ユーザー名を空にすることはできません!");
}
//データベースサーバーのログインユーザー名とパスワードを保存します
データベースユーザー = ユーザー;
データベースパスワード = パスワード;
// シングルトン [ware] パターンを適用して、クラス自体のインスタンスが 1 つだけになるようにします
if (connectionManager == null) {
connectionManager = 新しい DBManager();
}
// クラス自体のインスタンスを返す
接続マネージャーを返します。
}
/**
※データベース接続の取得方法
* @return データベース接続オブジェクト
*/
プライベート接続 getConnection() {
試す {
Class.forName(
ドライバーのバージョン ==
「2000年」
?
DRIVER_CLASS_SQLSERVER2000
: (ドライバーのバージョン ==
「2005年」
?
DRIVER_CLASS_SQLSERVER2005
:
DRIVER_CLASS_BRIDGECONNECT));
this.dbConnection =
DriverManager.getConnection(
ドライバーのバージョン ==
「2000年」
?
DATABASE_URL_SQLSERVER2000
: (ドライバーのバージョン ==
「2005年」
?
DATABASE_URL_SQLSERVER2005
:
DATABASE_URL_BRIDGECONNECT)、
データベースユーザー、
データベースパスワード);
} catch (ClassNotFoundException ex) {
System.err.println("SQL Server が見つかりません
" + driverVersion + "データベース ドライバー クラス: " + ex.getMessage());
//例外スタック情報をコンソールに出力
// ex.printStackTrace();
} catch (例外例) {
System.err.println("データベース接続エラーの取得: " + ex.getMessage());
//例外スタック情報をコンソールに出力
// ex.printStackTrace();
}
// データベース接続オブジェクトを返します
this.dbConnection を返します。
}
/**
※データベースコマンド実行オブジェクトの取得方法
* @param sql 実行するSQLコマンドアセンブリ文の文字列
* @return データベースコマンド実行オブジェクト
*/
private PreparedStatement getPreparedStatement
(文字列SQL) {
試す {
//取得したデータベース接続オブジェクトを元にデータベースコマンド実行オブジェクトを作成
this.preStatement = getConnection
().prepareStatement(sql);
} catch (例外例) {
System.err.println("データベースコマンド実行オブジェクト取得エラー: " + ex.getMessage());
//例外スタック情報をコンソールに出力
// ex.printStackTrace();
}
// データベースコマンド実行オブジェクトを返す
this.preStatement を返します。
}
/**
* 更新ステートメントの実行 (挿入|更新|削除)
* @param sql 実行するSQLコマンドアセンブリ文の文字列
* @return 影響を受ける行の数
*/
public intexecuteUpdate(String sql){
試す {
// 結果セット オブジェクトの元のコンテンツを空にします
this.rsSet = null;
// ステートメントを実行し、影響を受ける行の数を返します。
this.getPreparedStatement を返す
(SQL).executeUpdate();
} キャッチ (SQLException e) {
System.err.println("データ更新エラー:" +
e.getMessage());
0を返します。
}ついに{
//データベース接続リソースを閉じる
closeDBResource();
}
}
/**
* クエリ文の実行(Select)
* @param sql 実行するSQLコマンドアセンブリ文の文字列
* クエリ後の @return 結果セット オブジェクト
*/
public ResultSetexecuteQuery(String sql){
試す {
// 結果セット オブジェクトの元のコンテンツを空にします
this.rsSet = null;
//SQL文を実行して結果セットを取得します
this.rsSet =
this.getPreparedStatement(sql).executeQuery();
} キャッチ (SQLException e) {
System.err.println("クエリ データ エラー:" +
e.getMessage());
}
// 結果セットオブジェクトを返します
this.rsSet を返します。
}
/**
* 指定された SQL ステートメントの実行後に返される結果セット内のレコードの数を取得します
* @param sql 実行するSQLコマンドアセンブリ文の文字列
* @return クエリ結果から取得したレコード数
*/
public int getResultSetCount(String sql) {
//指定された SQL ステートメントの実行後に記録された行数を返すカウンター変数を保存します。
int カウント = 0;
試す {
// 結果セット オブジェクトの元のコンテンツを空にします
this.rsSet = null;
//SQL文を実行して結果セットを取得します
this.rsSet = this.getPreparedStatement
(SQL).executeQuery();
// 結果セットを反復処理し、カウンターを蓄積します。
while (this.rsSet.next()) {
カウント++;
}
} キャッチ (SQLException e) {
e.printStackTrace();
}
戻り数;
}
/**
* データベース接続リソース (結果セット オブジェクト、コマンド実行オブジェクト、接続オブジェクトを含む) を閉じます。
*/
public void closeDBResource() {
試す {
closeResultSet();
closePreparedStatement();
closeConnection();
キャッチ (SQLException sqlEx) {
System.err.println(sqlEx.getMessage
());
//例外スタック情報をコンソールに出力
// sqlEx.printStackTrace();
}
}
/**
* 結果セットオブジェクトを閉じるメソッド
* @throws SQLException
*/
private void closeResultSet() が SQLException をスローする {
試す {
if (this.rsSet != null) {
this.rsSet.close();
this.rsSet = null;
}
キャッチ (SQLException sqlEx) {
throw new SQLException("結果セット オブジェクトを閉じるエラー: " + sqlEx.getMessage());
//例外スタック情報をコンソールに出力
// sqlEx.printStackTrace();
}
}
/**
※データベースコマンド実行オブジェクトを閉じるメソッド
* @throws SQLException
*/
private void closePreparedStatement() がスローされます
SQL例外 {
試す {
if (this.preStatement != null) {
this.preStatement.close();
this.preStatement = null;
}
キャッチ (SQLException sqlEx) {
throw new SQLException("データベースを閉じるコマンド実行オブジェクト エラー: " + sqlEx.getMessage());
//例外スタック情報をコンソールに出力
// sqlEx.printStackTrace();
}
}
/**
※データベース接続を切断する方法
* @throws SQLException
*/
private void closeConnection() が SQLException をスローする {
試す {
if (this.dbConnection != null && (!
this.dbConnection.isClosed())) {
this.dbConnection.close();
}
キャッチ (SQLException sqlEx) {
throw new SQLException("データベース接続を閉じるエラー: " + sqlEx.getMessage());
//例外スタック情報をコンソールに出力
// sqlEx.printStackTrace();
}
}
}