dbcp连接mysql_dbcp 连接数据库

import org.apache.commons.pool.ObjectPool;

import org.apache.commons.pool.impl.GenericObjectPool;

import org.apache.commons.dbcp.ConnectionFactory;

import org.apache.commons.dbcp.PoolingDriver;

import org.apache.commons.dbcp.PoolableConnectionFactory;

import org.apache.commons.dbcp.DriverManagerConnectionFactory;

import java.sql.*;

public class DBConn {

private Connection conn = null;

private Statement stmt = null;

private static String sqlJdbc = "";

private static String sqlUser = "";

private static String sqlPwd = "";

private static Class driverClass=null;

private static ObjectPool connectionPool=null;

public DBConn() {

if("".equals(sqlJdbc)){

sqlJdbc = "jdbc:mysql://192.168.1.117:3306/test";

//sqlserver: jdbc:microsoft:sqlserver://IP;DatabaseName=lordeDAS

//oracle: jdbc:oracle:thin:@ip:1521:myordb

}

if("".equals(sqlUser)){

sqlUser = "root";

}

if("".equals(sqlPwd)){

sqlPwd = "";

}

initDataSource();

}

public synchronized static void initDataSource(){

if(driverClass==null){

try {

//oracle: oracle.jdbc.driver.OracleDriver

//sqlserver: com.microsoft.jdbc.sqlserver.SQLServerDriver

driverClass=Class.forName("org.gjt.mm.mysql.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

if(connectionPool==null){

try {

setupDriver(sqlJdbc);

} catch (Exception e) {

e.printStackTrace();

}

}

// Display some pool statistics

try {

printDriverStats();

} catch (Exception e) {

e.printStackTrace();

}

}

//获取一个连接

private Connection getDbPollConnection(){

try {

conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:auxdbpoll");

} catch(SQLException e) {

e.printStackTrace();

}

return conn;

}

// 获得记录集

public ResultSet executeQuery(String SQL) {

try {

stmt=getDbPollConnection().createStatement();

ResultSet rs = stmt.executeQuery(SQL);

return rs;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

// 执行SQL

public boolean execute(String SQL) {

try {

stmt=getDbPollConnection().createStatement();

stmt.execute(SQL);

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}finally{

close();

}

}

// 执行SQL

public boolean executeUpdate(String SQL) {

try {

stmt=getDbPollConnection().createStatement();

stmt.executeUpdate(SQL);

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}finally{

close();

}

}

public void close(){

if(stmt!=null){

try{

stmt.close();

stmt=null;

}catch(Exception e){

System.out.println(e);

}

}

if(conn!=null){

try{

conn.close();

conn=null;

}catch(Exception e){

System.out.println(e);

}

}

}

public static void printDriverStats() throws Exception {

PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");

ObjectPool connectionPool = driver.getConnectionPool("auxdbpoll");

System.out.println("活动的连接: " + connectionPool.getNumActive());

System.out.println("空闲的连接: " + connectionPool.getNumIdle());

}

public static void shutdownDriver() throws Exception {

PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");

driver.closePool("auxdbpoll");

}

public static void setupDriver(String connectURI) throws Exception {

System.out.println(connectURI);

connectionPool = new GenericObjectPool(null);

ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,sqlUser,sqlPwd);

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("auxdbpoll",connectionPool);

}

//测试

public void testQuery(){

String sql="select * from table_user";

try {

ResultSet rs=executeQuery(sql);

while(rs.next()){

System.out.println(rs.getString("user"));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

close();

}

}

public static void main(String[] args){

DBConn dbConn=new DBConn();

dbConn.testQuery();

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2007-03-21 11:35

浏览 1886

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值