Java开发基础-JDBC-基本使用步骤—06

JDBC的使用 注册驱动【依赖的驱动类,进行安装】获取连接【Connection建立连接】创建发送SQL语句对象【Connection创建发送SQL语句的Statement】发送SQL语句,并获取返回结果【Statement 发送sql语句到数据库并且取得返回结果】结果集解析【结果集解析,将查询结果解析出来】资源关闭【释放ResultSet、Statement 、Connection】 阅读详情

代码改进背景介绍:V4版本

# 连接池
## 作用
用来管理连接,避免连接过载(数据库瘫痪,性能降低)。
## 常用连接池创建方式:

1. DBCP

2. c3p0

相对而言C3P0性能更好些,在实际的开发中使用的也是最多的

本节将使用C3P0的方式创建数据库连接池:

C3P0简介: C3P0是一个开源的JDBC连接池,目前使用它的开源项目有Hibernate,Spring等。C3P0数据源在实际项目开发中使用得比较多。

c3p0与dbcp区别
  1. dbcp没有自动回收空闲连接的功能
  2. c3p0有自动回收空闲连接功能

首先通过下面的简单实例了解如何使C3P0创建连接池:

项目结构如下图所示:


需要引入Jar: c3p0-0.9.2-pre1.jar、mchange-commons-0.2.jar

1.在resources目录下添加C3P0的配置文件:c3p0-config.xml:

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

<c3p0-config>
    <!--
    C3P0的缺省(默认)配置,
    如果在代码中“ComboPooledDataSource ds = new ComboPooledDataSource();”这样写就表示使用的是C3P0的缺省(默认)配置信息来创建数据源
    -->
    <default-config>
        <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
        <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="user">learn</property>
        <property name="password">learn</property>
        
        <property name="acquireIncrement">5</property>
        <property name="initialPoolSize">10</property>
        <property name="minPoolSize">5</property>
        <property name="maxPoolSize">20</property>
    </default-config>

    <!--
    C3P0的命名配置,
    如果在代码中“ComboPooledDataSource ds = new ComboPooledDataSource("Oracle");”这样写就表示使用的是name是Oracle的配置信息来创建数据源
    -->
    <named-config name="Oracle">
        <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
        <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="user">learn</property>
        <property name="password">learn</property>
        
        <property name="acquireIncrement">5</property>
        <property name="initialPoolSize">10</property>
        <property name="minPoolSize">5</property>
        <property name="maxPoolSize">20</property>
    </named-config>

</c3p0-config>

2.编写DBCP测试类TestC3P0:

public class TestC3P0 {

	public static void main(String[] args) throws SQLException {
		ComboPooledDataSource ds = new ComboPooledDataSource("Oracle");
		System.out.println(ds.getConnection());
	}
}

3.运行程序我们可以看到成功通过C3P0连接池获取到数据库连接


上面通过对C3P0创建连接池再从中获取连接的简单介绍,下面通过它来改进我们之前的DBUtil3工具类:

/**
 * 开源项目及实际开发中使用最多的创建连接池的方式:C3P0
 * @author Cher_du
 *
 */
public class DBUtil4 {
    
    private static ComboPooledDataSource ds = null;
    //在静态代码块中创建数据库连接池
    static{
        try{
            //1.通过代码创建C3P0数据库连接池
            /*ds = new ComboPooledDataSource();
            ds.setDriverClass("oracle.jdbc.driver.OracleDriver");
            ds.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
            ds.setUser("learn");
            ds.setPassword("learn");
            ds.setInitialPoolSize(10);
            ds.setMinPoolSize(5);
            ds.setMaxPoolSize(20);*/
            
            //2.通过读取C3P0的xml配置文件创建数据源,C3P0的xml配置文件c3p0-config.xml必须放在src目录下
            //ds = new ComboPooledDataSource();//使用C3P0的默认配置来创建数据源
            ds = new ComboPooledDataSource("Oracle");//使用C3P0的命名配置来创建数据源
            
        }catch (Exception e) {
            throw new ExceptionInInitializerError(e);
        }
    }
    
    /**
    * 
    * 从数据源中获取数据库连接
    */ 
    public static Connection getConnection() throws SQLException{
        //从数据源中获取数据库连接
        return ds.getConnection();
    }
    
    /**
     * 释放资源,对应连接-不是关闭掉数据库连接
     * 释放的资源包括Connection数据库连接对象,负责执行SQL命令的Statement对象,存储查询结果的ResultSet对象
     */ 
    public static void release(Connection conn,Statement st,ResultSet rs){
        if(rs!=null){
            try{
                //关闭存储查询结果的ResultSet对象
                rs.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
            rs = null;
        }
        if(st!=null){
            try{
                //关闭负责执行SQL命令的Statement对象
                st.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        if(conn!=null){
            try{
                //将Connection连接对象还给数据库连接池,而不是关闭掉连接!
                conn.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void main(String[] args) throws SQLException {
    	Connection conn =DBUtil4.getConnection();
    	System.out.println(conn);
	}
}

运行程序可以看到成功通过C3P0获取到数据库连接信息!


下面我们实际使用一下改进后的DBUtil4工具类:

public class TestC3P0_APP {
	
	public static void main(String[] args) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			// 获取数据库连接
			conn = DBUtil4.getConnection();
			stmt = conn.createStatement();
			String sql = "insert into emp(empno,ename,sal) values(1200,'c3p',1500) ";
			int count = stmt.executeUpdate(sql);

			if (count > 0) {
				System.out.println("保存成功!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 释放资源
			DBUtil4.release(conn, stmt, rs);
		}
	}

}

执行程序后数据库表中数据变化-[新添加记录已保存成功!]


(20)JDBC简介、使用JDBC连接MySQL数据库详细步骤、连接数据库的代码 JDBC基本操作一、JDBC简介二级目录三级目录 一、JDBC简介 1.为什么会出现JDBC: SUN公司提供的一种数据库访问规则、规范,由于数据库种类较多,并且Java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。我们的Java程序只要使用SUN公司的JDBC驱动即可。 二级目录 三级目录 ... 阅读详情

相关推荐

JDBC事务管理(添加dbcp和c3p0测试.zip

在 java客户端对数据库增删改查的基础上,实现事务管理,并增加连接流,dbcp和c3p0.

dbcp 连接 测试 Demo

package com.data.dbcp; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statemen...

维度 336

从Gcode命令看3D打印机的‘大脑’:Marlin/Klipper固件是如何执行你的指令的?

本文深入解析3D打印机固件Marlin和Klipper如何执行Gcode指令,从语法解析到运动控制算法,再到温度管理,详细揭示了从指令到物理动作的转化过程。通过对比两大固件的设计哲学和性能优化技巧,帮助用户更好地理解和调优3D打印机的核心控制系统。

weixin_26763955的博客 384

JavaWeb开发——JDBC连接数据库几种方式

JDBC连接Mysql数据库的几种方式 第三方引入驱动 String url = "jdbc:mysql://localhost:3306/test"; Properties properties = new Properties(); properties.setProperty("user","root"); properties.setProperty("password","root"); // 获取Driver实现类对象 Driver driver = new com.mysql.j

m0_51403039的博客 647

别再为下载速度发愁了!手把手教你给qBittorrent/Transmission添加最新可用Tracker(附2024年实测地址清单)

本文提供2024年BT下载加速实战指南,详细解析Tracker工作原理与速度瓶颈,手把手教你为qBittorrent/Transmission添加最新可用Tracker,并附实测地址清单。通过优化配置和精选Tracker列表,显著提升下载速度和稳定性,解决连接延迟和peer数量限制问题。

weixin_28481133的博客 1269

UniApp 与 Taro 深度解析:如何根据项目需求选择最佳跨平台框架?

本文深度对比了UniApp和Taro两大主流跨平台开发框架。UniApp基于Vue生态,提供开箱即用的高效开发体验,尤其适合快速覆盖多端小程序;Taro则根植React范式,架构灵活,便于与现有React生态集成,更适合对性能和原生体验有高要求的复杂项目。文章结合团队技术栈、项目类型及性能需求,为开发者提供了清晰的选型指南。

snow3的博客 204

JDBC使用数据库完整流程

JDBC完整流程 文章目录JDBC完整流程一、加载JDBC驱动程序二、提供JDBC连接的URL三、创建数据库的连接四、创建一个Statement五、执行SQL语句六、处理结果七、关闭JDBC对象 一、加载JDBC驱动程序 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)...

瘦身狂魔的博客 465

Windows下Anaconda换清华镜像源最全指南(含常见问题解决)

本文提供了一份详尽的Windows系统下Anaconda配置清华镜像源的完整指南。针对网络下载缓慢的痛点,文章详细对比了命令行添加与直接编辑配置文件两种主流方法,并重点解决了配置过程中常见的文件缺失、安装失败、环境求解缓慢等疑难问题,帮助用户一劳永逸地提升包管理效率。

brandy的博客 337

3.配置DBCP:测试配置

<%-- 1.连接池可以理解是一个java类,必须实现接口DateSource 2.DBCP连接池也是一个java类,Tomcat为其new了对象并注册到JNDI,同时Tomcat实现了JavaEE规范之一的JNDI --%> <% // Context接口的lookup()可以从JNDI获取对象,通过名值对的形式;下面语句获取连接池对象(DateSource类

683

手把手教你用STM32标准库写一个能OTA升级的Bootloader(附完整代码)

本文详细介绍了如何使用STM32标准库开发支持OTA无线升级的Bootloader系统,包括Flash分区规划、Bootloader核心实现、无线升级流程及安全校验机制。通过实战代码示例,帮助开发者快速掌握STM32固件升级技术,提升物联网设备的远程维护能力。

weixin_30181209的博客 264

别再手动更新Excel了!用Jira看板管理你的个人项目(附保姆级配置流程)

本文详细介绍了如何利用Jira看板替代Excel进行个人项目管理,提供从注册到配置的保姆级教程。通过极简看板模式、自动化规则和数据分析功能,帮助用户实现任务可视化、协作高效化和提醒自动化,大幅提升个人工作效率。特别适合需要管理复杂个人项目的用户。

weixin_42699679的博客 229

Java开发基础-JDBC-基本使用步骤—06,mysqlsql优化面试题

小编精心为大家准备了一手资料以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术【附】架构书籍BAT面试的20道高频数据库问题解析Java面试宝典Netty实战算法BATJ面试要点及Java架构师进阶资料o、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术【附】架构书籍BAT面试的20道高频数据库问题解析Java面试宝典。

m0_56175058的博客 691

MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态

执行手眼校准有助于操作配备末端执行器(简称 “手”)的机械臂,该末端执行器依赖于摄像头提供的视觉数据。一旦完成了眼在手外的校准,机械臂就能准确地移动到摄像头识别的特定像素位置。这种能力是执行精确拾放任务(如分类、堆垛和分拣)的基础,即使在摄像机的确切位置和方向未知的情况下也是如此。机器人-摄像机系统有两种构型:眼在手内和眼在手外。在眼在手内构型中,摄像头直接安装在机器人手臂的末端执行器上。相反,在眼在手的构型中,摄像头固定在一个静止的物体上,机器人手臂在其视野内。

机器人控制与仿真应用 3355

JAVA中JDBC 访问数据库的基本步骤

在Java开发中,JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它允许Java程序与数据库进行交互。无论是访问关系型数据库还是其他类型的数据库,JDBC都提供了一套统一的标准接口。下面,我们将简要介绍使用JDBC访问数据库的基本步骤。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 7910

如何给K8S配置一个具有永久有效的kubeconfig

在 Amazon EKS 环境中,Kubernetes 的认证机制与 AWS IAM 深度集成,通过aws-iam-authenticator动态生成临时凭证。这种设计虽然增强了安全性,但给需要持久化凭证的工具链(如 CI/CD 系统中的 KubeVela)带来了挑战。具体表现为:临时凭证失效​​:默认 Token 有效期为 15 分钟至 1 小时;​​IAM 角色限制​​:直接使用aws eks get-token生成的凭证无法持久化

小杨同学的博客 661

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

6.Java的JDBC编程

本文章主要讲解了MySQL数据库和我们的idea怎么关联起来,我们需要下载对应的驱动包,并将下载好的驱动包手动导入到我们的direction项目中,并将驱动包复制粘贴进去,然后激活一下,我们就获取了一个新的库,此时我们在idea中使用对应的语法写一些MySQL命令时,我们的MySQL则会有相应的反应,例如我们select * from student;这个语句在idea中写入时,我们idea中也可以查询到student这个表格的所有信息。

xinhang10的博客 3639

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java学习之JDBC基本使用

JDBC中如何连接数据库及ResultSet、Statement、PrepareStatement、事务、批处理的基本使用

404 Not Found 1081

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JDBC的基本使用

java连接数据库

weixin_45417754的博客 654

JDBC详解

1.JDBC是什么? Java DataBase Connectivity(Java语言连接数据库) 2.JDBC的本质是什么? JDBC是SUN公司制定的一套接口(interface) java.sql.*;(这个软件包下有很多接口) 接口都有调用者和实现者。 面向接口调用、面向接口写实现类,这都属于面向接口编程。 为什么要面向接口编程? 解耦合:降低程序的耦合度,提高程序的扩展力。 多态机制就是非常典型的:面向抽象编程。(不要面向具体编程) 建议: Animal a = new Cat

LiLi的博客 4万+

JDBC开发步骤:

JDBC入门 1.首先加入mysql-connector-java-5.1.39-bin.jar(JDBC开发jar包) 2.简单的开发代码案例 try { //1.注册驱动 DriverManager.deregisterDriver(new com.mysql.jdbc.Driver()); //2.建立连接 参数1:协议+访问的数据库 , 参数2:用户名 , 参数3:密码...

qq_40148447的博客 224

JDBC介绍以及使用步骤 ——恋天小结

1. JDBC介绍 我们之前学习MYSQL时,为了使用MYSQL服务,我们通常要使用客户端与MYSQL服务进行连接,然后才能输入SQL语句进行数据库的各种操作。客户端有命令行与图形界面2种。 但是在更多的环境下,由我们人直接操作数据是很低效的,比如双11这种业务场景下,一秒中往往要在库中生成上千万甚至几亿条数据,靠人来手工操作是不现实的,只能依赖于程序进行这种高并发的操作。 程序语言有多种,比如Java、Python、C/C++等,程序语言如果想执行SQL语句,也必须要先与数据库进行

xiao_yi_8421的博客 189

Java开发基础-JDBC-核心对象的使用—06

作为一名即将求职的程序员,面对一个可能跟近些年非常不同的 2019 年,你的就业机会和风口会出现在哪里?在这种新环境下,工作应该选择大厂还是小公司?已有几年工作经验的老兵,又应该如何保持和提升自身竞争力,转被动为主动?就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份“Java经典面试问题(含答案解析).pdf和一份网上搜集的“Java程序员面试笔试真题库.pdf。

2401_86358808的博客 1168

06_JDBC

第一章 JDBC概述 1.1 JDBC概述 JDBC:Java Database Connectivity,它是代表一组独立于任何数据库管理系统(DBMS)的API,声明在java.sql与javax.sql包中,是SUN(现在Oracle)提供的一组接口规范。由各个数据库厂商来提供实现类,这些实现类的集合构成了数据库驱动jar。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接...

依韵的博客 358

JAVA采用JDBC连接操作数据库详解

JDBC连接数据库概述 一、JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,

分布式领域探索 1万+

06.Java的JDBC编程

1. 创建数据库连接Connection2. 创建操作命令Statement3. 使用操作命令来执行SQL4. 处理结果集ResultSet5. 释放资源JDBC使用步骤:1. 创建数据库连接ConnectionDriverManager创建DataSource获取2. 创建操作命令Statement3. 使用操作命令来执行SQL// 查询操作// 新增、修改、删除操作4. 处理结果集ResultSet...5. 释放资源try {= null){= null){

m0_47017197的博客 89

JDBC连接数据库步骤

executeUpdate(String sql)⽅法:执⾏的DML语句,使⽤它可以对表中的记录进⾏修改、插⼊和删除等操作。返回值:是int类型的值,表示的影响的⾏数。(可以通过影响的⾏数判断DML语句是否执⾏成功,返回值>0的则执⾏成功,反之,则失败)语法:jdbc:mysql://ip地址(域名):端⼝号/数据库名称?DriverManager 类:装人所需的 JDBC 驱动程序,编程时调用它的方法来创建连接。示例:jdbc:mysql://127.0.0.1:3306/db1。

m0_69615893的博客 1413
上一篇: Java开发基础-JDBC-基本使用步骤—05
下一篇: Java开发基础-JDBC-基本使用步骤—07
Coder_Boy_
博客等级 码龄10年 2804粉丝 819原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值