Contoh artikel ini menceritakan metode kumpulan koneksi database Java. Bagikan untuk semua orang untuk referensi Anda. Spesifiknya adalah sebagai berikut:
Paket Com.kyo.connection; java.util.enumeration; IS // NULL. ConnectionParam Param) {this.param = param;} / ** * * Dapatkan nama tabel database tes dari tabel database tes. Nama tabel tes * * * @param testable * nama tabel tes string * / public voidteTtable (string testtable) {this.testtable = testtable;} / ** * 创建一个数据库连接池 , , , 连接池中的可用连接的 , , , , , , , , , , ,数量采用类成员 InitialConnections 中设置的值*/ Public Sinkronisasi void createPool () melempar Exception {// 确保连接池没有创建 // 如果连接池己经 dibuat, koneksi vektor hemat tidak akan kosong jika (koneksi! = Null ) {return; // Jika dibuat, return} // instance driver driver driver = (driver) yang ditentukan dalam driver jdbc = (driver) (class.forname (this.param.getDriver ()) .newInstance ( ); diatur di InitialConnection. CreateConnection (this.param.getMinconconnection ()); * * * @Param numConnections * Jumlah database yang akan dibuat */ private void createConnections (int numConnections) melempar sqlexception {// buat jumlah koneksi basis data yang ditentukan untuk (int x = 0; x <numConnections; x ++ ) { / / / Apakah jumlah database yang menghubungkan ke kumpulan telah mencapai maksimum? Nilai maksimum adalah dengan maxConnections, menunjukkan bahwa jika maxConnections // adalah 0 atau negatif, itu berarti tidak ada batasan jumlah koneksi. // Jika jumlah koneksi telah mencapai maksimum, pintu keluar ditarik. If (this.param.getmaxConnection ()> 0 && this.connections.size ()> = this.param.getmaxConnection () {break;} // Tambahkan objek koneksi pooledConnection baru t t o koneksi vektor // tambahkan satu koneksi ke koneksi di dalam Pool (dalam koneksi vektor), coba {connections.addelement (new pooledConnection (newConnection ()));} catch + e.getMessage ()); Untuk membuat ... ");}/ ** * * Buat koneksi database baru dan mengembalikannya ke * * rturn dan mengembalikan baru koneksi database yang dibuat */ koneksi privat newConnection () melempar sqlexception {// Buat database Hubungkan ke koneksi conn = driverManager.getConnection (this.param.getUrl (), this .param.getUser (), this.param.getpassword ()); , periksa database, dan dapatkan jumlah koneksi pelanggan yang diizinkan oleh database ini untuk mendukung dukungan // connections.size () == 0 berarti tidak ada koneksi dengan pembuatan (koneksi ke koneksi. .Size () = = 0) {DataBasemetadata metadata = conn.getMetadata (); Batas tidak diketahui // drivermaxconnections adalah integer yang kembali, menunjukkan bahwa jumlah koneksi dalam kumpulan koneksi memungkinkan pelanggan untuk terhubung ke jumlah maksimum IF (drivermaxConnections> 0 && param.getmaxConnection ()> drivermaxconnection (drivermaxConnection (drivermaxConnection sonnection soniconponection sconnection SI) steron son) ;}} Return conn; // kembali ke koneksi basis data baru yang dibuat} /** * * Kembali koneksi basis data yang tersedia dengan memanggil fungsi getFreeConnection (), * * Jika tidak ada koneksi basis data yang tersedia, dan lebih banyak koneksi basis data tidak dapat Dibuat * * untuk membangun cobalah untuk mendapatkannya lagi. * @Return Mengembalikan Objek Koneksi Basis Data yang Tersedia */ Koneksi Sinkronisasi Publik GetConnection () Melemparkan Sqlexception {// Pastikan bahwa koneksi chi ji dibuat jika (koneksi == null) {null; dibuat, lalu kembalikan null} koneksi conn = getFreeConnection (); Tunggu (250); // Mengembalikan penghubung yang tersedia}/** * * * Fungsi ini mengembalikan koneksi basis data yang tersedia dari koneksi vektor kumpulan yang terhubung. * * * * * * * * * * * * Buat beberapa koneksi database dan letakkan di kumpulan koneksi. * * Jika semua koneksi masih digunakan, kembalikan null * * * @return mengembalikan koneksi database yang tersedia */ conneconnection private () melempar SQLException {// dapatkan koneksi database yang tersedia dari koneksi koneksi koneksi Conn = findFreeconnection (); if (conn == null) {// Jika tidak ada koneksi di kumpulan koneksi saat ini // Buat beberapa koneksi createConnection (this.param.getIncremeNections ())); () = findFreeConnection (); if (conn == null) {// Jika Anda masih tidak dapat mendapatkan koneksi yang tersedia setelah koneksi dibuat, return return null;}} return conn; Koneksi basis data yang tersedia, * * Jika tidak ada koneksi yang tersedia, kembalikan null * * @Return mengembalikan koneksi basis data yang tersedia */ koneksi pribadi FindFreeconnection () melempar SQLException {Connection Conn = NULL; Objek dalam koneksi vektor enumeration enumerate = connections.elements (); Objek ini tidak sibuk, dapatkan koneksi basis data dan atur sebagai conn = pconn.getConnection (); , buat koneksi baru, // dan ganti objek koneksi yang tidak tersedia ini. koneksi! " + e.getMessage ()); return null;} pconn.setConnection (conn);} break; // temukan koneksi yang tersedia, keluar}} return conn; // kembali untuk menemukan koneksi yang tersedia}/ * * * * * Test whether a connection is available. If it is not available, turn it off and return to False * *, otherwise you can use the True * * * * * * * * @Param CONN * database connection that needs to be tested * * *RTURN Return True to indicate that this connection can be available, false It means that you do not use*/ Private Boolean TestConnection (Connection Conn) {Try {// determine whether the test table exists if (testable.equals ("") {// If the test table is empty, try to use this connected setautocommit ()) Method // to determine whether the connection is available (this method is only available in some databases, if it is not available, // throw an exception ). Conn.createstatement (); (Conn); Void returnConnection (koneksi conn) {// Pastikan kumpulan koneksi ada. ada, dan tidak dapat dikembalikan ke koneksi ke koneksi ke koneksi ke koneksi ke koneksi ke kumpulan koneksi! "); return;} pooledConnection pconn = null; enmeration enumerate = connections.elements (); // Semua koneksi di kolam koneksi, temukan objek koneksi saat (encering.hasmo reelements ()) {pconn = (pooledConnection) encerkan.nextElement (); == pConn.getConnection ()) {// Temukan, atur koneksi ini ke status idle pconn.setbusy (false); RefreshConnection void yang disinkronkan publik () melempar SQlexception {// Pastikan bahwa inovasi kumpulan koneksi ada (C. Onnection == null) {System.out.println ("Kolam koneksi tidak ada, itu tidak dapat disegarkan!"); ;} PooledConnection pconn = null; (ponn.isbusy ()) {tunggu (5000); CloseConnection (pconn.getConnection ()); */ Publik menyinkronkan void closeConnectionPool () melempar sqlexception {// pastikan bahwa kumpulan koneksi ada. Return;} pooledConnection pconn = null; )) {tunggu (5000); Kumpulan koneksi adalah koneksi kosong = null;} / **** Matikan koneksi basis data ** @param koneksi database* / private void closeConnection (kontinuitas koneksi) {coba {conn.close ();} catc e) {System.out.println ("Tutup kesalahan penghubung database:" + e.getMessage ());} /**** Untuk membuat program menunggu milidetik yang diberikan ** @param yang diberikan nomor yang diberikan*yang diberikan* / Private void tunggu (int mseconds) {coba {thread.sleep (mseconds);} catch (InterruptedException e) {} / ** * * Penggunaan internal untuk menyimpan objek yang terhubung di kumpulan koneksi. Basis data, dan yang lainnya adalah tanda bahwa koneksi sedang digunakan. */ Class PooledConnection {Connection Connection = NULL; } // Kembali ke koneksi koneksi publik getConnection () {return connection;} // Atur objek ini, hubungkan ection suara publik (koneksi koneksi) {this.connection = koneksi; isBusy () {return rever;} // koneksi objek pengaturan sibuk public void setBusy (boolean sibuk) {this.busy = sibuk;}}}}}
Diharapkan bahwa artikel ini bermanfaat untuk desain program Java semua orang.