この記事の例は、Javaのデータベース接続プールの方法を示しています。あなたの参照のために全員のためにそれを共有してください。詳細は次のとおりです。
com.kyo.sql.sql.databa.sql.drivermanager; Java.util.NeNumeration; // null。 ConnectionParam param){this.param = param;} / ** * *テストデータベーステーブルのテストデータベーステーブルの名前を取得します。テストテーブルの名前 * * * @param Testable *文字列テストテーブル名 * / public voidtettable(string testtable){this.testtable = testtable;} / ** *创建一个数据库连接池、连接池中的可用连接的amital initialConnections ){return; // return、return} ); drivermanager.RegisterDriver(// JDBCドライバーを登録してください初期コネクションで設定します。 CreateConnections(this.param.getMinconConnection()); * * * @param numconnections作成するデータベースの数 */ private void createconnections(int numconnections)throws sqlexception {//指定された数のデータベース接続を作成します(int x = 0; x <numconnections; x +++ ){ / / /プールに接続するデータベースの数は最大に達しましたか?最大値はmaxconnectionsによるものであり、maxconnections //が0または負の場合、接続の数に制限がないことを意味することを指摘します。 //接続の数が最大に達した場合、出口は撤回されます。 if(this.param.getmaxconnection()> 0 && this.connections.size()> = this.param.getmaxconnection(){break;} //新しいPooledConnectionオブジェクトT T T T T T T T T O Connection // 1つの接続を追加するプール(ベクトル接続)、try {connections.addelement(new PooledConnection(newConnection());} catch + e.getMessage());作成...接続conn = drivermanager.getConnection(this.param.geturl()、this.param.getuser()、this.param.getpassword()); 、データベースを確認し、このデータベースで許可されている顧客接続の数を取得してサポートをサポートしています// connections.size()== 0は、(connections ..size()= = = = = == 0の作成への接続がないことを意味します。 = 0){databasemetadata metadata = conn.getMetadata();制限は知られていない// DriverMaxConnectionsは戻る整数であり、接続プールの接続の数により、顧客が最大数のif(drivermaxConnections> 0 && param.getmaxconnection()> drivermaxConnection(DrivermaxConnection(DrivermaxNonection s)に接続できることを示しています。 ;}} conn;作成された * *ビルドするには、もう一度取得しようとします。 * * @return利用可能なデータベース接続オブジェクトを返します */ public同期接続getConnection()sqlexception {//接続キーが作成されていることを確認してください(接続== null){null;まだ作成されてから、null}接続conn = getFreeConnection(); wait(250); getFreeConnection(); //利用可能な接続を返します}/** * * *この関数は、接続されたプールベクトル接続を現在データベクトに使用していない場合、この関数が * * * * * * * *を設定しています。 * * * * * * * * * * *いくつかのデータベース接続を作成し、接続プールに配置します。 * *すべての接続がまだ使用されている場合は、null * * * @returnを返します。@return利用可能なデータベース接続を返します */ private conneconnection()throws sqlexception {//接続プール接続から利用可能なデータベース接続を取得conn = findfreeconnection(); if(conn == null){//現在の接続プールに接続がない場合//いくつかの接続CreateConnections(this.param.getIncremenections())); ()= findFreeConnection();利用可能なデータベース接続、 *利用可能なnull * * * @return利用可能なデータベース接続を返します接続プールの列挙= Connections.Elements();このオブジェクトはビジーで、データベース接続を取得し、conn = pconn.getConnection()として設定します。 、新しい接続を//繋がり! " + e.getMessage()); return null;} pconn.setConnection(conn);} break; //使用可能な接続を見つける、exit}} return conn; //接続が使用可能であるかどうかをテストします。それをオフにしてfalse * *に戻します。 *rturnはtrueを返して、この接続が利用可能であることを示します、FALSEはあなたが使用しないことを意味します*/ private boolean testConnection(connection conn){//テストテーブルが存在するかどうかを決定します(testable.equals( "" ") {//テストテーブルが空の場合は、この接続されたsetautocommit())メソッドを使用して、接続が利用可能かどうかを判断してください(このメソッドは、使用できない場合は一部のデータベースでのみ使用可能です。 )。 conn.createStatement(); (conn); void returnConnection(接続conn){//接続プールが存在することを確認してください(接続== null){system.out.println( "接続プールはありません。存在すると、接続への接続に接続することはできません。接続プールへの接続への接続!接続池のすべての接続は、接続オブジェクトを見つけます。 == pconn.getConnection()){//この接続をIDLE STATE PCONN.SETBUSY(false); public synchronized void refreshconnections()はsqlexceptionをスローします{//接続プールの革新が存在することを確認します(C. onnections == null){system.out.println( "接続プールは存在しません、リフレッシュできません!"); ;} PooledConnection = null; (ponn.isbusy()){wait(5000); //この接続を閉じると、新しい接続に置き換えられます。 CloseConnection(pconn.getConnection()); */ public synchronized closeconnectionpool()はsqlexceptionをスローします{//接続プールが存在しないことを確認してください。 return;} puledConnection = null; ){wait(5000); // 5秒後に、closeconnection(pconn.getConnection())を閉じます。接続プールは空の接続= null;} / ****データベース接続をオフにします** @paramデータベース接続* / private void closeconnection(接続連続性){try {conn.close();} catc e){system.out.println( "データベースの接続エラーを閉じる:" + e.getMessage());} /****与えられた数値を与えられた指定された*@paramを指定したmilliseconds ** @paramを待機させる* / private void wait(int mseconds){try {thread.sleep(mseconds);} catch(arternedexception e){} / ** * *接続プールに接続されたオブジェクトを保存しますデータベース、もう1つは、接続が使用されていることの兆候です。 */ class PooledConnection {接続= null; } //パブリック接続の接続に戻るgetConnection(){return connection;} isbusy(){return bush;} //設定オブジェクトの接続はビジーパブリックボイドsetbusy(boolean busy){this.busy = busy;}}}}}}}}}}}}}}}}}}}}}}
この記事がすべての人のJavaプログラムのデザインに役立つことが期待されています。