连接数据库,使用c3p0技术连接MySQL数据库

读取配置文件连接MySQL数据库

先确认已经导入了 mysql 的驱动包

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/v20?useUnicode=true&characterEncoding=utf8
username=root
password=123456

JdbcUtil.java

package com.stu_mvc.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcUtil {

    private static String CLASS_DRIVER = "";
    private static String URL = "";
    private static String USERNAME = "";
    private static String PASSWORD = "";

    static {
        Properties properties = new Properties();
        try {
            //读取上面的配置文件
            properties.load(JdbcUtil.class.getResourceAsStream("/db.properties"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        CLASS_DRIVER = properties.getProperty("driver");
        URL = properties.getProperty("url");
        USERNAME = properties.getProperty("username");
        PASSWORD = properties.getProperty("password");
        try {
            Class.forName(CLASS_DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     *  getConn()
     *  获取conn
     */
    public static Connection getConn() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (SQLException e) {

            e.printStackTrace();
        }
        return conn;

    }

    /**
     * 利用泛型改进释放资源 rs,st,conn
     */
    public static <T extends AutoCloseable> void closeAll(T... autos) {
        for (AutoCloseable t : autos) {
            if (t != null) {
                try {
                    t.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

使用 c3p0数据库连接池连接MySQL

普通的数据库连接创建的缺点:

用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。

数据库连接池概念

所谓数据库连接池,可以看作 :在用户和数据库之间创建一个”池”,这个池中有若干个连接对象,当用户想要连接数据库,就要先从连接池中获取连接对象,然后操作数据库。一旦连接池中的连接对象被拿光了,下一个想要操作数据库的用户必须等待,等待其他用户释放连接对象,把它放回连接池中,这时候等待的用户才能获取连接对象,从而操作数据库。

下载C3P0工具包

C3P0工具包包含的版本:

  • c3p0-0.9.5.2
  • mchange-commons-java-0.2.11

c3p0-config.xml 的配置

注意: xml 配置文件的名称必须是:c3p0-config.xml ,也是放在src 目录下

? 这里的 jdbcUrl 比较容易出问题,要是出现问题,建议仔细找找。

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <!-- 文件名字是固定的,连接池会找到这个配置文件进行配置 -->
    <default-config>
        <!--第一条内容是固定的-->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <!--最后一项改成你的数据库名字即可,我这里之前总是连接不上,改成三个 /// 后发现连接成功-->
        <property name="jdbcUrl">jdbc:mysql:///v20</property>
        <!--mysql的用户名和密码-->
        <property name="user">root</property>
        <property name="password">123456</property>
    </default-config>
</c3p0-config>

JdbcUtil.java

写一个封装的工具类,开发起来还不是美滋滋!

package com.register_mvc.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.impl.DbAuth;

public class JdbcUtil {
    // 创建 c3p0 连接池对象
    static ComboPooledDataSource dataSource = new ComboPooledDataSource("v20");
    //创建一个 ThreadLocal
    static ThreadLocal<Connection> th = new ThreadLocal<Connection>();

    /**
     *  getConn()
     *  获取conn
     */
    public static Connection getConn() {
        // 从连接池中获取连接
        // 先从 th 中获取,如果为空再到连接池中获取
        Connection conn = th.get();
        if (conn == null) {
            try {
                //把 获取的conn 存到 ThreadLocal 中
                // ThreadLocal 内部有个map
                // 通过当前的 线程 作为 key  value 是存的内容
                // 统一线程  key一致  value值 肯定一致
                conn = dataSource.getConnection();
                //把 conn存到th中
                th.set(conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return conn;
    }

    /**
     * 利用泛型方法释放资源 rs,st,conn
     */
    public static <T extends AutoCloseable> void closeAll(T... autos) {
        for (AutoCloseable t : autos) {
            if (t != null) {
                try {
                    t.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

原文地址:https://www.cnblogs.com/zhiwenxi/p/11608121.html

时间: 2024-10-08 00:08:34

连接数据库,使用c3p0技术连接MySQL数据库的相关文章

c3p0连接Mysql数据库

c3p0连接Mysql数据库 注:测试使用maven构建的项目,如需学习maven构建项目,请先到maven分类学习如何构建maven项目  1.创建一个maven项目,然后找到pom.xml文件,打开(第一次打开不是通过.xml文件格式打开,可通过右键 -- Open With -- XML Editor 打开) 打开后在配置文件中添加依赖,也就是jar包. 2.添加依赖: (1)c3p0核心依赖 <dependency> <groupId>c3p0</groupId>

Java基础103 Hibernate技术连接MySQL数据和Oracle数据库的配置方法

1.Hibernate技术连接MySQL数据 User.hbm.xml 配置文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernat

JDBC连接MySQL数据库及演示样例

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制.

python3.4怎么连接mysql pymysql连接mysql数据库

本文介绍了python3 4连接mysql数据库的方法,在python3 4中使用原来python2 7的mysqldb已不能连接mysql数据库了,可以使用pymysql. 在python3.4中使用原来python2.7的mysqldb已不能连接mysql数据库了,可以使用pymysql,来完成连接mysql的重任. 具体步骤: 序号 描述1 去github上下载pymysql的安装包pymysql https://github.com/PyMySQL/PyMySQL2 解压到某个盘符下3 

Hibernate连接mysql数据库并自动创建表

天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 所以说,Hibernate讲白了就是简化了与数据库之间的操作,那么要玩转它自然就得连接上数据库咯.(与Hibernate对应的orm框架还有Mybatis,只不过M

Ubuntu jsp平台使用JDBC来连接MySQL数据库

Ubuntu 7.04 搭建Ubuntu jsp平台开发环境MySQL+tomcat+apache+j2sdk1.6在所有安装开始前先在Terminal中输入 rpm -q -a查看是否安装过rpm 和 rpm包的所需软件如果没有安装rpm在Terminal中输入 sudo apt-get install rpm. AD:2014WOT全球软件技术峰会北京站 课程视频发布 你们知道什么是Ubuntu jsp平台么这个非常高深的运用技术将由我来非常讲解,Ubuntu jsp平台NB在哪呢,下面我来

Unity3D 连接MySQL数据库笔记4-Unity3d代码

新建Unity3D项目 新建一个 Plugins文件夹 把所需要的DLL放到 Plugins中 新建C#脚本 命名为ToMysql.cs 不多说了 ,直接上代码,很简单  有注释 ,大家一看就明白了 using UnityEngine; using System; using System.Collections; using System.Data; using MySql.Data.MySqlClient; public class ToMysql : MonoBehaviour { pub

用MyEclipse10.0远程连接Mysql数据库服务器

说明:本文档所有的操作均在满足以下条件的情况下操作, A.远程Linux服务器已经安装好MySQL数据库 B.本地电脑可以ping通远程服务器 C.已经成功安装了Myeclipse 一.下载mysql-connector-java-3.1.14-bin.jar 这个是连接mysql数据库的驱动器. 下载地址: http://dev.mysql.com/downloads/connector/j/5.0.html 也可以到官方网站下载,网址如下:www.mysql.com 二.在Myeclipse

Linux系统Java连接Mysql数据库

Linux系统下Java连接Mysql数据库方法与Windows下类似,具体步骤如下: 下载JDBC(驱动):mysql-connector-java-5.1.37.tar.gz 解压下载的数据包:tar -zxvf mysql-connector-java-5.1.37.tar.gz 解压后,mysql-connector-java-5.1.29-bin.jar位于mysql-connector-java-5.1.29目录下. 配置解压后,mysql-connector-java-5.1.29