jdbc之连接池

第三方数据库连接池DBCP的应用

连接池的原理

1.缓存Connection对象

2.缓存Statement及PreparedStatement

package jdbcdemo2;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

/**
 * @author Administrator
 *第三方数据库连接池DBCP的应用
 */
public class demo1 {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs   = null;

        try {
            InputStream in =
                    demo1.class.getClassLoader().getResourceAsStream("jdbc.properties");
            Properties prop = new Properties();
            prop.load(in);

            DataSource ds = BasicDataSourceFactory.createDataSource(prop);
            //这里的连接对象不同于DriverManager.getConnection中连接对象,
            //其close方法已经被改造
            con = ds.getConnection();
            pstmt = con.prepareStatement("select * from dog");
            rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.print(rs.getInt(1) + "\t");
                System.out.print(rs.getString(2) + "\t");
                System.out.print(rs.getInt(3) + "\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    //关闭存储查询结果的ResultSet对象
                    rs.close();
                }
                if (pstmt != null) {
                     //关闭负责执行SQL命令的Statement对象
                    pstmt.close();
                }
                if (con != null) {
                    //注意:关闭后,将连接返还给连接池,而不是给数据库
                    con.close();
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }

        }

    }
}

原文地址:https://www.cnblogs.com/helloworld2019/p/10810103.html

时间: 2024-11-06 22:53:27

jdbc之连接池的相关文章

JDBC之 连接池

JDBC之 连接池 有这样的一种现象: 用java代码操作数据库,需要数据库连接对象,一个用户至少要用到一个连接.现在假设有成千上百万个用户,就要创建十分巨大数量的连接对象,这会使数据库承受极大的压力,为了解决这种现象,一种技术出现了,这就是数据库连接池. 什么是数据库连接池(原理) 所谓数据库连接池,可以看作 :在用户和数据库之间创建一个”池”,这个池中有若干个连接对象,当用户想要连接数据库,就要先从连接池中获取连接对象,然后操作数据库.一旦连接池中的连接对象被拿光了,下一个想要操作数据库的用

day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)

day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbutils ? 事务 ? 事务的四大特性:ACID: mysql中操作事务 jdbc中操作事务 ? ? ? 事务概述 为了方便演示事务,我们需要创建一个account表: CREATE TABLE account( ????id INT PRIMARY KEY AUTO_INCREMENT, ????NA

集合、多线程、网络编程、JDBC、连接池、反射、综合应用

1.使用TCP连接服务器和客户端. 2.结合反射的知识.创建JDBC和连接池. 3.客户端输入信息并保存到一个对象中,发送到服务器. 4.服务器接收对象,通过JDBC存储进数据库中. 5.把服务器放到线程中,保持启动状态. 6.客户端读取数据库的数据信息,放到集合中. 7.遍历集合,输出数据库的数据. 服务器和客户端的项目结构: 服务器 客户端 实体类: package com.luo.project.pojo; import java.io.Serializable; public class

JDBC自定义连接池

最近学习了JDBC的相关知识,写一下自定义连接池 一些说明: 本代码参考了部分别人的代码!!! JDBCCon类具体创建了连接: MyConnection类集成了Connection类用来管理连接与池,其中的close方法必须pool.add(): MyDataSource则是具体实现连接池. 具体步骤: 1.导mysql的jar包 2.配置db.propertites 1 driver = com.mysql.cj.jdbc.Driver 2 url = jdbc:mysql://localh

JDBC从连接池获取连接

DBCP介绍 DBCP是Java开源连接池中最常用的一种,它一般应用在数据库使用非常频繁的系统中,可以处理数据库连接的大量请求,是做大型站点的首选数据库配置. 简单配置 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/test username=root password=123456 maxActive=50 maxIdle=20 maxWait=60000 添加maven <dependency>

hibernate+spring+struts中使用原生态的sql导致oping JDBC connection连接池资源抽光问题

打代码已经有好几个月了. HibernateTemplate hibernateTemplate = getHibernateTemplate();SessionFactory sessionFactory = hibernateTemplate.getSessionFactory(); Session session = sessionFactory.openSession(); Query query = session.createSQLQuery(hql).addEntity(Argum

java JDBC (八) 连接池

package cn.sasa.demo1; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; public class DBUtils { private static BasicDataSource datasource = new BasicDataSource(); static { /** * 连接池: * 存放连接的容器 * 不需要每次都创建连接.释放连接 * * DataSou

boneCP连接池配置

jdbc和连接池对于你这个场景来说,都足够,既然用spring管理了,建议还是使用连接池,另外,spring自身没有实现连接池,一般都是对第三方连接池的包装,常见的有C3P0,dbcp以及最近比较流行的boneCP等,这几个配置都差不多太多,以boneCP为例: <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">

dbcp,c3p0连接池

<!-- 配置dbcp数据源 --> <bean id="dataSource2" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <pr