DBCP依赖Apache的另外2个开源项目
commons.collections.jar和commons.pool.jar
下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。
以下是连接池代码:
commons.collections.jar和commons.pool.jar
下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。
以下是连接池代码:
package
selfservice;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
public class PoolManager ... {
private static String
driver="oracle.jdbc.driver.OracleDriver",//驱动
url = "jdbc:oracle:thin:@192.168.0.40:1521:drcom",//URL
Name="drcom",//用户名
Password="drcom";//密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null;
public PoolManager()...{
}
private static void loadProperties()...{
try ...{
java.io.InputStream stream = new java.io.FileInputStream ("config.properties");
java.util.Properties props = new java.util.Properties();
props.load(stream);
driver = props.getProperty("ORACLE_DRIVER");
url = props.getProperty("ORACLE_URL");
Name = props.getProperty("ORACLE_LOGIN_NAME");
Password = props.getProperty("ORACLE_LOGIN_PASSWORD");
} catch (FileNotFoundException e) ...{
System.out.println("读取配置文件异常");
} catch(IOException ie)...{
System.out.println("读取配置文件时IO异常");
}
}
private static synchronized void initDataSource() ...{
if (driverClass == null) ...{
try ...{
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) ...{
e.printStackTrace();
}
}
}
public static void StartPool() ...{
loadProperties();
initDataSource();
if (connectionPool != null) ...{
ShutdownPool();
}
try ...{
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new
DriverManagerConnectionFactory(url, Name, Password);
PoolableConnectionFactory poolableConnectionFactory = new
PoolableConnectionFactory(connectionFactory, connectionPool, null, null,
false, true);
Class.forName("org.apache.commons.dbcp.PoolingDriver");
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver
("jdbc:apache:commons:dbcp:");
driver.registerPool("dbpool", connectionPool);
System.out.println("装配连接池OK");
} catch (Exception e) ...{
e.printStackTrace();
}
}
public static void ShutdownPool() ...{
try ...{
PoolingDriver driver = (PoolingDriver) DriverManager.getDrive
("jdbc:apache:commons:dbcp:");
driver.closePool("dbpool");
} catch (SQLException e) ...{
e.printStackTrace();
}
}
public static Connection getConnection() ...{
Connection conn = null;
if(connectionPool == null)
StartPool();
try ...{
conn = DriverManager.getConnection ("jdbc:apache:commons:dbcp:dbpool");
} catch (SQLException e) ...{
e.printStackTrace();
}
return conn;
}
public static Connection getConnection(String name)...{
return getConnection();
}
public static void freeConnection(Connection conn)...{
if(conn != null)...{
try ...{
conn.close();
} catch (SQLException e) ...{
e.printStackTrace();
}
}
}
public static void freeConnection (String name,Connection con)...{
freeConnection(con);
}
public static void main(String[] args) ...{
try ...{
Connection conn = PoolManager.getConnection();
if(conn != null)...{
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from
tblgxinterface");
int c = rs.getMetaData().getColumnCount();
while(rs.next())...{
System.out.println();
for(int i=1;i<=c;i++)...{
System.out.print(rs.getObject(i));
}
}
rs.close();
}
PoolManager.freeConnection(conn);
} catch (SQLException e) ...{
e.printStackTrace();
}
}
}
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
public class PoolManager ... {
private static String
driver="oracle.jdbc.driver.OracleDriver",//驱动
url = "jdbc:oracle:thin:@192.168.0.40:1521:drcom",//URL
Name="drcom",//用户名
Password="drcom";//密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null;
public PoolManager()...{
}
private static void loadProperties()...{
try ...{
java.io.InputStream stream = new java.io.FileInputStream ("config.properties");
java.util.Properties props = new java.util.Properties();
props.load(stream);
driver = props.getProperty("ORACLE_DRIVER");
url = props.getProperty("ORACLE_URL");
Name = props.getProperty("ORACLE_LOGIN_NAME");
Password = props.getProperty("ORACLE_LOGIN_PASSWORD");
} catch (FileNotFoundException e) ...{
System.out.println("读取配置文件异常");
} catch(IOException ie)...{
System.out.println("读取配置文件时IO异常");
}
}
private static synchronized void initDataSource() ...{
if (driverClass == null) ...{
try ...{
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) ...{
e.printStackTrace();
}
}
}
public static void StartPool() ...{
loadProperties();
initDataSource();
if (connectionPool != null) ...{
ShutdownPool();
}
try ...{
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new
DriverManagerConnectionFactory(url, Name, Password);
PoolableConnectionFactory poolableConnectionFactory = new
PoolableConnectionFactory(connectionFactory, connectionPool, null, null,
false, true);
Class.forName("org.apache.commons.dbcp.PoolingDriver");
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver
("jdbc:apache:commons:dbcp:");
driver.registerPool("dbpool", connectionPool);
System.out.println("装配连接池OK");
} catch (Exception e) ...{
e.printStackTrace();
}
}
public static void ShutdownPool() ...{
try ...{
PoolingDriver driver = (PoolingDriver) DriverManager.getDrive
("jdbc:apache:commons:dbcp:");
driver.closePool("dbpool");
} catch (SQLException e) ...{
e.printStackTrace();
}
}
public static Connection getConnection() ...{
Connection conn = null;
if(connectionPool == null)
StartPool();
try ...{
conn = DriverManager.getConnection ("jdbc:apache:commons:dbcp:dbpool");
} catch (SQLException e) ...{
e.printStackTrace();
}
return conn;
}
public static Connection getConnection(String name)...{
return getConnection();
}
public static void freeConnection(Connection conn)...{
if(conn != null)...{
try ...{
conn.close();
} catch (SQLException e) ...{
e.printStackTrace();
}
}
}
public static void freeConnection (String name,Connection con)...{
freeConnection(con);
}
public static void main(String[] args) ...{
try ...{
Connection conn = PoolManager.getConnection();
if(conn != null)...{
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from
tblgxinterface");
int c = rs.getMetaData().getColumnCount();
while(rs.next())...{
System.out.println();
for(int i=1;i<=c;i++)...{
System.out.print(rs.getObject(i));
}
}
rs.close();
}
PoolManager.freeConnection(conn);
} catch (SQLException e) ...{
e.printStackTrace();
}
}
}
以上创建一个连接池,并从连接池中得到连接,连接池会管理每个连接,以上测试通过。