El ejemplo de este artículo indica el método del grupo de conexión de base de datos de Java. Compártelo para todos para su referencia. Los detalles son los siguientes:
paquete com.kyo.connection; java.util.enumeration; IS // NULL. ConnectionParam Param) {this.param = param;} / ** * * Obtenga el nombre de la tabla de base de datos de prueba de la tabla de base de datos de prueba. El nombre de la tabla de prueba * * * @param testable * Nombre de la tabla de prueba de cadena * / public voidTetTable (String testTable) {this.testTable = testTable;} / ** * 创建一个数据库连接池 连接池中的可用连接的 连接池中的可用连接的数量采用类成员 Conexiones iniciales 中设置的值*/ public sincronizado void createPool () lanza la excepción {// 确保连接池没有创建 // 如果连接池己经 creadas, las conexiones vectoriales de guardado no estarán vacías si (conexión! = NULL ) {return; // si se crea, return} // La instancia de controlador de controlador de controlador = (controlador) especificado en JDBC Driver = (controlador) (class.forname (this.param.getdriver ()) .NewinStance ( )); establecido en la Conexión Initial. CreateConnections (this.param.getMinconConnection ()); * * * @Param numconnections * El número de bases de datos que se creará */ private void createConnections (int numconnections) lanza SQLException {// crea un número especificado de conexión de base de datos para (int x = 0 0; x <numconnections; x ++ ) { / / / / ¿El número de bases de datos que se conecta al grupo ha alcanzado el máximo? El valor máximo es mediante MaxConnections, señalando que si MaxConnections // es 0 o negativo, significa que no hay límite en el número de conexiones. // Si el número de conexiones ha alcanzado el máximo, se retira la salida. If (this.param.getmaxconnection ()> 0 && this.connections.size ()> = this.param.getmaxconnection () {break;} // Agregue un nuevo objeto de Connection de agrupación t t o vector de conexiones // agregue una conexión a El grupo (en la conexión vectorial), intente {Conexión.Addelement (New PooledConnection (newConnection ()));} Catch + E.getMessage ()); Para crear ... ");}/ ** * * Cree una nueva conexión de base de datos y devuélvala a * * RTurn y devuelva una nueva conexión de base de datos creada */ Conexión privada NewConnection () lanza SQLException {// Crear una base de datos conectar a la conexión conn = drivermanager.getConnection (this.param.geturl (), this .param.getuser (), this.param.getPassword ()); , verifique la base de datos y obtenga el número de conexiones de clientes permitidas por esta base de datos para admitir el soporte // conections.size () == 0 significa que no hay conexión con la creación de (conexiones a las conexiones. .size () = = = 0) {databAsEmetAdata metadata = conn.getMetadata (); El límite no se conoce // DrivermaxConnections es un entero que regresa, lo que indica que el número de conexiones en el grupo de conexión permite a los clientes conectarse al número máximo de if (drivermaxConnections> 0 && param.getmaxconnection ()> drivermaxconnection (drivermaxconnection (drivermaxconnection s) ;}} Return Conn ;/ Vuelve a la nueva conexión de base de datos creada} /** * * Vuelva a ser una conexión de base de datos disponible creado * * para construir intente volver a conseguirlo. * * @Return Devuelve un objeto de conexión de base de datos disponible */ Public Synchronized Connection getConnection () lanza SQLException {// Asegúrese de que la conexión chi Ji se cree si (Connections == NULL) {NULL; creado todavía, return null} conexión conn = getFreeConnection (); // Obtenga una conexión de base de datos disponible // la espera (250); // Devuelve la conexión disponible disponible}/** * * * Esta función devuelve una conexión de base de datos disponible desde las conexiones vectoriales de grupo conectadas. * * * * * * * * * * * * Crea varias conexiones de base de datos y póngalas en el grupo de conexión. * * Si todas las conexiones aún están en uso, return null * * * @return devuelve una conexión de base de datos disponible */ private conneconnection () lanza SQLException {// Obtenga una conexión de base de datos disponible desde la conexión de conexión de conexión conn = findFreeConnection (); if (conn == null) {// Si no hay conexión en el grupo de conexión actual // crea algunas conexión createConnections (this.param.getIncremenections ())); () = findFreeConnection (); Conexión de la base de datos disponible, * * Si no hay conexión disponible, return null * * * @return devuelve una conexión de base de datos disponible */ conexión privada findfreeconnection () lanza SQLException {Connection Conn = NULL; Objetos en la enumeración de vectores de la piscina de conexión = conexión.elements (); Este objeto no está ocupado, obtiene su conexión de base de datos y establece como un concurrido conn = pconn.getConnection (); , cree una nueva conexión, // y reemplace este objeto de conexión no disponible. ¡conexión! " + e.getMessage ()); return null;} pconn.setConnection (conn);} break; // Encuentre una conexión disponible, salida}} return Conn; // Volver a encontrar la conexión disponible}/ * * * * * * Pruebe si una conexión está disponible. *RTURN RETURN VERDADERO para indicar que esta conexión puede estar disponible, falsa, significa que no usa*/ Private Boolean TestConnection (Connection Conn) {try {// Determine si la tabla de prueba existe si (testable.equals ("") {// Si la tabla de pruebas está vacía, intente usar este método conectado setauToCommit ()) // para determinar si la conexión está disponible (este método solo está disponible en algunas bases de datos, si no está disponible, // lanza una excepción ). conn.createstatement (); (Conn); Void ReturnConnection (Connection Conn) {// Asegúrese de que el grupo de conexión exista. Existir, y no se puede devolver a la conexión a la conexión a la conexión a la conexión a la conexión en el grupo de conexión); Todas las conexiones en el estanque de conexión, encuentre el objeto de conexión mientras (enumeere.hasmo reelements ()) {pconn = (agrio acumulado) enumerate.nextelement (); == pconn.getConnection ()) {// Buscar, establecer esta conexión al estado inactivo pconn.setBusy (falso); Public sincronizado Void RefreshConnections () lanza SQLException {// Asegúrese de que la innovación del grupo de conexión exista (C. onnections == null) {System.out.println ("El grupo de conexión no existe, no se puede actualizar!"); ;} PooledConnection pconn = null; (ponn.isbusy ()) {espera (5000); Closeconnection (pconn.getConnection ()); */ Public sincronizado void closeConnectionPool () lanza SQLException {// Asegúrese de que el grupo de conexión exista. Return;} PooledConnection pconn = null; )) {Wait (5000); El grupo de conexión es vacío conexiones = null;} / **** Apague una conexión de base de datos ** @param Conexión de base de datos* / privado void CloseConnection (Connection Continuition) {try {conn.close ();} CATC. e) {System.out.println ("Cierre el error de conexión de la base de datos:" + E.getMessage ());} /**** para que el programa espere los milisegundos dados ** @param dado el número dado* / Private void Wait (int mseconds) {try {Thread.sleep (mseconds);} catch (InterruptedException e) {} / ** * * Uso interno para guardar el objeto conectado en el grupo de conexión, uno es la conexión de La base de datos y la otra es el signo de que se está utilizando la conexión. */ Class PooledConnection {Connection Connection = NULL; } // Regrese a la conexión de la conexión pública getConnection () {return Connection;} // Establezca este objeto, conecte la voz publicitaria (conexión de conexión) {this.connection = Connection; isbusy () {return ocupado;} // La conexión del objeto de configuración está ocupado public void setBusy (boolean ocupado) {this.busy = ocupado;}}}}}
Se espera que este artículo sea útil para el diseño del programa Java de todos.