eclipse和idea的DBCP的使用和使用C3P0数据源查询数据

本文详细介绍如何在Eclipse和IntelliJ IDEA中配置和使用DBCP及C3P0数据库连接池,包括创建数据库表、配置连接池参数、编写Java代码获取连接等步骤。

本次用到的jar包先奉上(狗头

链接:https://pan.baidu.com/s/1Z7R8O2rR81Psxt8aUOvMMw 
提取码:nmb9

创建数据表

安装mysql和Navicat,下载后连接到本地数据库

点击【连接】->MySQL

输入自定的(随便写)连接名,主机选择本地,即输入localhost,或者输入127.0.01,密码就是创建数据库时设置的密码

右击选择新建一个数据库

给数据库命个名,字符集选择utf8

创建成功,接下来新建一个表

右击刚刚新建的数据库,点击【表】,再点击【新建表】

简单的建一个表,将id设为主键,主要注意图中这几点,添加主键,和设置主键递增,

然后单击保存输入表名

可以看到下面多出来了一个user表,是我们刚刚创建的

在表中输入一些内容

eclipse(后面还有idea的)

配置tomcat,会的话可以跳过这一步,点击如下位置

找到【server】->runtime environment  ->【add】

然后选择要的tomcat版本(这里选择的时tomcat8.5),点击next

点击browse,选择tomcat所在路径,或者把路径复制进来也一样

点击finish完成配置

Tomcat8出现则证明配置成功

如图创建一个web项目

输入工程名,选择tomcat,点击finish

创建成功

提前准备好这些jar包,少一个可能都不行

右键点击项目位置,选择最后一个

选中Java BUIld Path,选中Libraries标签,点击Add External JARs。

在弹出文件框中选择jar包

如果不会直接将jar包拖到lib文件夹下面

创建

右击file –> new ->file,

选择当前项目src文件,输入文件名dbcpconfig.properties,点击finish

输入如下代码

#\u8FDE\u63A5\u8BBE\u7F6E

 driverClassName=com.mysql.jdbc.Driver

 url=jdbc:mysql://localhost:3306/jdbc

 username=root

 password=123456

 #\u521D\u59CB\u5316\u8FDE\u63A5

 initialSize=5

 #\u6700\u5927\u8FDE\u63A5\u6570\u91CF

 maxActive=10

 #\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5

 maxIdle=10

同样的,如果不会直接将写好的txt文件名改为dbcpconfig.properties,拖到src文件下面

以下几个点注意,可以根据自身自行修改

创建一个名称为DBCPUtils的工具类,其代码如下所示。

右击src/main/java(老版本的就在src文件下创建),new->class

输入如下代码

import java.sql.*;

import java.util.Properties;

import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;

public class DBCPUtils {

    private static DataSource ds;//定义一个连接池对象

    static{

        try {

            Properties pro = new Properties();

            pro.load(DBCPUtils.class.getClassLoader()

                      .getResourceAsStream("dbcpconfig.properties"));

            //得到一个连接池对象

            ds = BasicDataSourceFactory.createDataSource(pro);

        } catch (Exception e) {

            throw new ExceptionInInitializerError("初始化连接错误,请检查配置文件!");

        }

    }

    //从池中获取一个连接

    public static Connection getConnection() throws SQLException{

        return ds.getConnection();

    }

    public static void closeConn(Connection conn){   

        if(conn!=null){

            try {

                conn.close();//关闭

            } catch (SQLException e) {

                e.printStackTrace();

            }

        }

    }

}

如果有报错,根据提示调试即可

完成如图

创建一个测试类DBCPTest,(创建方法同上)在其main方法中测试获取数据连接。其测试类的代码如下:

import java.sql.SQLException;

public class DBCPTest {

    public static void main(String[] args) throws SQLException {

       //输出连接信息

       System.out.println(DBCPUtils.getConnection());

       long begin = System.currentTimeMillis();

       for (int i = 0; i < 10000; i++) {

          Connection conn = DBCPUtils.getConnection();

           DBCPUtils.closeConn(conn);

       }

       long end = System.currentTimeMillis();

       System.out.println("用时:" + (end - begin));

    }

}

结果如图

运行结果如图所示

使用C3P0数据源查询数据

编写C3P0的配置文件,文件名一定要为:c3p0-config.xml;然后编写代码代码为:

<?xml version="1.0" encoding="UTF-8"?>

<c3p0-config>

    <default-config>

        <property name="driverClass">com.mysql.jdbc.Driver</property>

        <property name="jdbcUrl">

            jdbc:mysql://localhost:3306/jdbc

         </property>

        <property name="user">root</property>

        <property name="password">123456</property>

        <property name="checkoutTimeout">30000</property>

        <property name="initialPoolSize">10</property>

        <property name="maxIdleTime">30</property>

        <property name="maxPoolSize">100</property>

        <property name="minPoolSize">10</property>

        <property name="maxStatements">200</property>

    </default-config>

    <named-config name="itcast">

        <property name="driverClass">com.mysql.jdbc.Driver</property>

        <property name="jdbcUrl">

             jdbc:mysql://localhost:3306/jdbc

        </property>

        <property name="user">root</property>

        <property name="password">123456</property>

        <property name="initialPoolSize">5</property>

        <property name="maxPoolSize">15</property>

    </named-config>

</c3p0-config>

同样的不

或者另外写一个记事本文件,重命名为c3p0-config.xml后导入

创建一个名称为C3p0Test的类,其代码如下所示。

import java.sql.*;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3p0Test {
	public static DataSource ds = null;
	// 初始化C3P0数据源
	static {
		// 使用c3p0-config.xml配置文件中的named-config节点中name属性的值
		ComboPooledDataSource cpds = new ComboPooledDataSource("itcast");
		ds = cpds;
	}
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement prestmt = null;
		ResultSet rs = null;
		try {
			conn = ds.getConnection();
			String sql = "select * from user";
			prestmt = conn.prepareStatement(sql);
			rs = prestmt.executeQuery();
			while (rs.next()) {
				System.out.print(rs.getInt("id") + "    \t");
				System.out.print(rs.getString("name") + "    \t");
				System.out.print(rs.getString("password") + "    \t");
				System.out.println();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				rs = null;
			}
			if (prestmt != null) {
				try {
					prestmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				prestmt = null;
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				conn = null;
			}
		}
	}
}

输出结果,遍历表中所有数据

Idea

创建一个web项目 new - > project

选中如图web applicance->next,选择项目名和存放路径

如果tomcat配置好了就跳过

选择 + ,在下拉中找到 Tomcat Server,选择local

选择好tomcat

在点击 Deployment ,然后点击 + ,选择Artifact,

选择带项目名和war的,点击OK,配置完成

在web文件下的WEB-INF文件,右击【new】->directory,创建文件

包名为lib

将需要的jar包直接复制进来(或者托进来也行)

右击lib 点击【add as library】

点击ok

剩下我都会用这种最简单粗暴的方式

创建配置文件dbcpconfig.properties

在项目的src目录下创建一个名称为dbcpconfig.properties的配置文件,编辑后的内容如下所示。

#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
username=root
password=itcast
#<!-- 初始化连接 -->
initialSize=10
#最大连接数量
maxActive=50
#<!-- 最大空闲连接 -->
maxIdle=20
#<!-- 最小空闲连接 -->
minIdle=5
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
maxWait=1000

或者在记事本重命名dbcpconfig.properties,写好拖入src

创建一个名称为DBCPUtils的工具类,其代码如下所示。

import java.sql.*;
import java.util.Properties;
import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;
public class DBCPUtils {
    private static DataSource ds;//定义一个连接池对象
    static{
        try {
            Properties pro = new Properties();
            pro.load(DBCPUtils.class.getClassLoader()
            		    .getResourceAsStream("dbcpconfig.properties"));
            //得到一个连接池对象
            ds = BasicDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            throw new ExceptionInInitializerError("初始化连接错误,请检查配置文件!");
        }
    }
    //从池中获取一个连接
    public static Connection getConnection() throws SQLException{
        return ds.getConnection();
    }
    public static void closeConn(Connection conn){    
        if(conn!=null){
            try {
                conn.close();//关闭
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

创建一个测试类DBCPTest,在其main方法中测试获取数据连接。其测试类的代码如下:

import java.sql.SQLException;
public class DBCPTest {
	public static void main(String[] args) throws SQLException {
		//输出连接信息
		System.out.println(DBCPUtils.getConnection());
		long begin = System.currentTimeMillis();
		for (int i = 0; i < 10000; i++) {
			Connection conn = DBCPUtils.getConnection();
			DBCPUtils.closeConn(conn);
		}
		long end = System.currentTimeMillis();
		System.out.println("用时:" + (end - begin));
	}
}

运行结果如下

在项目的src目录下创建一个名称为c3p0-config.xml的配置文件,编辑后的内容如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<default-config>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">
     		jdbc:mysql://localhost:3306/jdbc
     	</property>
		<property name="user">root</property>
		<property name="password">123456</property>
		<property name="checkoutTimeout">30000</property>
		<property name="initialPoolSize">10</property>
		<property name="maxIdleTime">30</property>
		<property name="maxPoolSize">100</property>
		<property name="minPoolSize">10</property>
		<property name="maxStatements">200</property>
	</default-config> 
	<named-config name="itcast">
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">
           	jdbc:mysql://localhost:3306/jdbc
        </property>
		<property name="user">root</property>
		<property name="password">123456</property>
		<property name="initialPoolSize">5</property>
		<property name="maxPoolSize">15</property>
	</named-config>
</c3p0-config>



创建一个名称为C3p0Test的类,其代码如下所示。

import java.sql.*;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3p0Test {
	public static DataSource ds = null;
	// 初始化C3P0数据源
	static {
		// 使用c3p0-config.xml配置文件中的named-config节点中name属性的值
		ComboPooledDataSource cpds = new ComboPooledDataSource("itcast");
		ds = cpds;
	}
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement prestmt = null;
		ResultSet rs = null;
		try {
			conn = ds.getConnection();
			String sql = "select * from user";
			prestmt = conn.prepareStatement(sql);
			rs = prestmt.executeQuery();
			while (rs.next()) {
				System.out.print(rs.getInt("id") + "    \t");
				System.out.print(rs.getString("name") + "    \t");
				System.out.print(rs.getString("password") + "    \t");
				System.out.println();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				rs = null;
			}
			if (prestmt != null) {
				try {
					prestmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				prestmt = null;
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				conn = null;
			}
		}
	}
}

运行结果如图所示

作者时一个普通小白,如果有什么不对的地方欢迎指正(狗头保命ing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值