IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JDBC及C3P0、Druid连接池之学习 -> 正文阅读

[大数据]JDBC及C3P0、Druid连接池之学习

简介

? ? ? ? JDBC(Java DadaBase Connectivity)Java数据库连接。

????????JDBC本质:其实是官方(Sun公司)定义的一套操作所有关系型数据库的规则(接口)。各个数据库厂商去实现这个接口,提供数据库驱动(jar包)。我们可以使用这套接口编程,但真正执行的代码是驱动jar包中的实现类。

简单使用

? ? ? ? 步骤:

? ? ? ? ? ? ? ? 1、导入驱动jar包

? ? ? ? ? ? ? ? ? ? ? ? 将mysql-connector-java-5.1.37-bin.jar到项目的libs中,并添加进项目。

? ? ? ? ? ? ? ? 2、注册驱动

? ? ? ? ? ? ? ? 3、获取数据库连接对象Connectivity

? ? ? ? ? ? ? ? 4、定义sql

? ? ? ? ? ? ? ? 5、获取执行sql语句的对象Statement

? ? ? ? ? ? ? ? 6、执行sql,接受返回结果

? ? ? ? ? ? ? ? 7、处理结果

? ? ? ? ? ? ? ? 8、释放资源

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

        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取数据库连接对象
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
        //定义sql语句
        String sql="update user set password=654321 where id=1";
        //获取执行sql的对象,Statement
        Statement stmt = conn.createStatement();
        //执行sql
        int count = stmt.executeUpdate(sql);
        //处理结果
        System.out.println(count);
        //释放资源
        stmt.close();
        conn.close();

    }

? ? ? ? 详解对象:

? ? ? ? ? ? ? ? ?DriverManager:驱动管理对象(功能:1.注册驱动、2.获取数据库连接)

?????????????????Connection:数据库连接对象(功能:1.获取执行sql的对象、2.管理事务)

?????????????????Statement:执行sql的对象(功能:1.执行静态SQL语句、不推荐使用)

?????????????????ResuleSet:结果集对象

?????????????????PreparedStatement:执行sql的对象(功能:1.执行动态SQL语句、推荐使用)

? ? ? ?事务管理:

? ? ? ? ? ? ? ? 开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,及开启事务。在执行sql之前开启事务。

? ? ? ? ? ? ? ? 提交事务:commit():在所有sql都执行完毕后提交事务。

? ? ? ? ? ? ? ? 回滚事务:rollback():在发送错误及catch中回滚事务。

数据库连接池

? ? ? ? 概念:

? ? ? ? ? ? ? ? 数据库连接池其实就是一个存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。

? ? ? ? 好处:

? ? ? ? ? ? ? ? 1、节约资源

? ? ? ? ? ? ? ? 2、用户访问高效

数据库连接池技术

? ? ? ? C3P0:

? ? ? ? ? ? ? ? 1、导入jar包(c3p0-0.9.5.2.jar、mchange-commons-java-0.2.12.jar),前提条件需要数据库驱动jar包。

? ? ? ? ? ? ? ? 2、定义配置文件。名称必须为c3p0.properties或者c3p0-config.xml。路径可直接将文件放在src目录下。

<c3p0-config>
  <!--使用默认的配置读取连接池对象-->
  <default-config>
    <!--连接参数-->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
    <property name="user">root</property>
    <property name="password">123456</property>
    <!--连接池参数-->
    <!--初始化申请的连接数量-->
    <property name="initialPoolSize">5</property>
    <!--最大的连接数量-->
    <property name="maxPoolSize">10</property>
    <!--超时时间-->
    <property name="checkoutTimeout">3000</property>
  </default-config>
  
  <!--自定义连接池对象-->
  <named-config name="otherc3p0">
    <!--连接参数-->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
    <property name="user">root</property>
    <property name="password">123456</property>
    <!--连接池参数-->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">8</property>
    <property name="checkoutTimeout">1000</property>
  </named-config>
</c3p0-config>

? ? ? ? ? ? ? ? 3、创建核心对象(ComboPooledDataSource:数据库连接池对象)。

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

//c3p0的演示
public class C3P0_Demo1 {

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

        //创建数据库连接对象
        DataSource ds=new ComboPooledDataSource();
        //获取连接对象
        Connection conn = ds.getConnection();
        //输出连接对象
        System.out.println(conn);

    }

}

? ? ? ?

????????Druid:

? ? ? ? ? ? ? ? 1、导入jar包(druid-1.0.9.jar),前提条件需要数据库驱动jar包。

? ? ? ? ? ? ? ? 2、定义配置文件。名称需为druid.properties文件形式。路径可任意。

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
#初始化连接数
initialSize=5
#最大连接数
maxActive=10
#超时时间
maxWait=3000

? ? ? ? ? ? ? ? 3、加载配置文件

? ? ? ? ? ? ? ? 4、获取数据库连接池对象(DruidDataSourceFactory:通过工厂模式获取)?

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

//演示Druid
public class Druid_Demo1 {

    public static void main(String[] args) throws Exception {
        //加载配置文件
        Properties pro=new Properties();
        InputStream is =
                Druid_Demo1.class.getClassLoader().getResourceAsStream("druid.properties");
        pro.load(is);

        //创建并获取连接池对象
        DataSource ds = DruidDataSourceFactory.createDataSource(pro);
        Connection conn = ds.getConnection();

        //输出连接对象
        System.out.println(conn);
    }

}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:26:02  更:2021-11-23 12:28:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:07:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码