【JDBC】快速入门“连接池”技术

C3P0-config.xml 配置文件 用于servlet+jsp开发时连接数据库,必须要配置文件。该配置文件已经设置了时区和页面的编码问题。只要改数据库名即可用。 立即下载

本文主要讲解JDBC中的连接池的基础,适合新手和入门的小白。


Table of Contents

连接池

JDBC原生技术实现连接池

实现第一个JDBC原生技术连接池

使用该连接池

DBCP连接池

创建连接池

使用连接池

C3P0连接池

创建连接池

使用连接池


我们以往连接数据库执行SQL的都必须要进行如下操作:

new一个驱动对象:

使用加载驱动程序类来注册驱动程序:

DBUtils中的工具类来获取连接:

通常情况下,我们获取一个连接,也仅仅只是执行一个SQL语句,然后就不用了(甚至有时候还忘记关闭),如果项目太大,连接数太多,数据库就会无法承载起这么多的连接而出错!于是,我们需要连接池来管理我们的连接!


连接池

诞生背景:

  1. “获得连接”或“释放资源”是非常消耗系统资源的两个过程
  2. 如果有很多个用户都在连接和释放操作,必然会浪费掉很多资源

解决方案:

  1. 事先创建好一个放置“连接”容器,成为连接池
  2. 通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
  3. 当用户A连接完毕后,连接池回收该连接,用户B又可以继续使用该连接

特性:

  1. Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。
  2. 这样应用程序可以方便的切换不同厂商的连接池!常见的连接池:DBCP、C3P0。

JDBC原生技术实现连接池

自己实现线程池的步骤:

  1. 编写连接池需实现java.sql.DataSource接口
  2. 创建批量的Connection用LinkedList保存【既然是个池,当然用集合保存、、LinkedList底层是链表,对增删性能较好】
  3. 实现getConnetion(),让getConnection()每次调用,都是在LinkedList中取一个Connection返回给用户
  4. 调用Connection.close()方法,Connction返回给LinkedList

实现第一个JDBC原生技术连接池

核心:实现DataBase提供的接口

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.LinkedList;
import java.util.logging.Logger;
import javax.sql.DataSource;
import utils.JDBCUtils;

/**
 * 使用JDBC原生技术,实现一个连接池工具类
 * 
 * @author KYLE
 *
 */
public class ConnectPoolWithJDBC implements DataSource{
	//1.创建1个容器用于存储Connection对象
	private static LinkedList<Connection> pool = new LinkedList<Connection>();
	
	//2.创建5个连接放到容器中去
	static{
		for (int i = 0; i < 5; i++) {
			Connection conn = JDBCUtils.getConnection();
			pool.add(conn);
		}
	}
	
	/**
	 * 重写获取连接的方法
	 */
	@Override
	public Connection getConnection() throws SQLException {
		Connection conn = null;
		//3.使用前先判断
		if(pool.size()==0){
			//4.池子里面没有,我们再创建一些
			for (int i = 0; i < 5; i++) {
				conn = JDBCUtils.getConnection();
				pool.add(conn);
			}
		}
		//5.从池子里面获取一个连接对象Connection
		conn = pool.remove(0);
		return conn;
	}

	/**
	 * 归还连接对象到连接池中去
	 */
	public void backConnection(Connection conn){
		pool.add(conn);
	}
	@Override
	public PrintWriter getLogWriter() throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void setLogWriter(PrintWriter out) throws SQLException {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void setLoginTimeout(int seconds) throws SQLException {
		// TODO Auto-generated method stub
		
	}
	@Override
	public int getLoginTimeout() throws SQLException {
		// TODO Auto-generated method stub
		return 0;
	}
	@Override
	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public <T> T unwrap(Class<T> iface) throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public boolean isWrapperFor(Class<?> iface) throws SQLException {
		// TODO Auto-generated method stub
		return false;
	}
	@Override
	public Connection getConnection(String username, String password) throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}
}

使用该连接池

以向数据库中添加为例,演示连接池的用法:
public void testAddUser() {
	Connection conn = null;
	PreparedStatement pstmt = null;
	// 1.创建自定义连接池对象
	ConnectPoolWithJDBC dataSource = new ConnectPoolWithJDBC();
	try {
		// 2.从池子中获取连接
		conn = dataSource.getConnection();
		String sql = "insert into person values(?,?,?)";
		pstmt = conn.prepareStatement(sql);
		pstmt.setInt(1, 15);
		pstmt.setString(2, "hor");
		pstmt.setInt(3, 33);
		int rows = pstmt.executeUpdate();
		if (rows > 0) {
			System.out.println("添加成功!");
		} else {
			System.out.println("添加失败!");
		}
	} catch (Exception e) {
		throw new RuntimeException(e);
	} finally {
		dataSource.backConnection(conn);
	}
}

DBCP连接池

由于自己写的连接池,在很多地方有缺陷,性能不好,为此,我们需要学习大佬们写的连接池。它的本质还是对JDBC底层连接池技术的封装。

DBCP连接池导包

  1. DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。
  2. DBCP也是一个开源的连接池,是Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。

导入dbcp和pool的jar包,其中mysql-connector驱动包也不能少,dbutils包可选。

  • 成功导入dbcp和pool

DBCP相关类

  • 实现类数据源的规范接口:javax.sql.DataSource
  • 创建连接池的类是:org.apache.commons.dbcp.BasicDataSource;

BasicDataSource类的成员属性:

分类

属性

描述

必须项

driverClassName

数据库驱动名称

url

数据库的地址

username

用户名

password

密码

基本项(扩展)

maxActive

最大连接数量

minIdle

最小空闲连接

maxIdle

最大空闲连接

initialSize

初始化连接

创建连接池

DBCP创建一个连接池,并连接数据库(方式一)
import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class DBCPPools {
	public static void main(String[] args) {
		BasicDataSource bds = new BasicDataSource(); //使用该类来创建连接池
		//连接数据库的4个最基本信息,通过对象方法setXXX设置进来
		bds.setDriverClassName("com.mysql.jdbc.Driver");
		bds.setUrl("jdbc:mysql://localhost:3306/mydb");
		bds.setUsername("root");
		bds.setPassword("kyle");
		
		try {
			Connection con = bds.getConnection();
			System.out.println(con);
		} catch(SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("数据库连接失败!");
		}
	}
}
//表明连接成功:
//jdbc:mysql://localhost:3306/mydb, UserName=root@localhost, MySQL-AB JDBC Driver
DBCP创建一个连接池,并连接数据库(使用properties)
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

/**
 * 专门为 DBCP连接池 包封装的创建、连接方式
 * 
 * 核心:
 * 	加载文件流:本类反射.getClassLoader().getResourceAsStream("配置文件");
 * 
 * @author KYLE
 *
 */
public class DBCPPools {
	private static DataSource dataSource;
	static{
		try {
			//1.加载找properties文件输入流
			InputStream is = DBCPPools.class.getClassLoader().getResourceAsStream("configMySQL.properties");
			//2.加载输入流
			Properties props = new Properties();
			props.load(is);
			//3.创建数据源
			dataSource = BasicDataSourceFactory.createDataSource(props);
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	
	public static DataSource getDataSource(){
		return dataSource;
	}
	
	public static Connection getConnection(){
		try {
			return dataSource.getConnection();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

使用连接池

class TestFunction {
	// 定义2个方法,实现数据表的添加,数据表查询
	// QueryRunner类对象,写在类成员位置,需要导入dbutils相关jar包
	private static QueryRunner qr = new QueryRunner(DBCPPools.getDataSource());

	public static void main(String[] args) {
		select();
		//insert();
	}

	// 数据表查询
	public static void select() {
		String sql = "SELECT * FROM person";
		try {
			List<Object[]> list = qr.query(sql, new ArrayListHandler());
			for (Object[] objs : list) {
				for (Object obj : objs) {
					System.out.print(obj + "\t");
				}
				System.out.println();
			}
		} catch (SQLException ex) {
			throw new RuntimeException("数据查询失败");
		}
	}

	// 数据表添加数据
	public static void insert() {
		String sql = "INSERT INTO person (p_id,p_name,p_age)VALUES(?,?,?)";
		Object[] params = {100, "aoc", 12};
		try {
			int row = qr.update(sql, params);
			System.out.println(row);
		} catch (SQLException ex) {
			throw new RuntimeException("数据添加失败");
		}
	}
}

C3P0连接池

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

【DBCP连接池的使用】

第一步:引入DBCP连接池的jar包:c3p0-0.9.2.1.jar

第二步:新建配置文件(在src目录下),文件名为c3p0-config.xml(此文件名是固定的),

第三步:编辑该配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
  <!-- 使用默认的配置读取连接池对象 -->
  <default-config>
  	<!--  连接参数 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <!--  指定字符集utf8,否则插入中文乱码 -->
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/kdb</property>
   <!--  jdbc:mysql://localhost:3306/db_library?useSSL=false&amp;serverTimezone=UTC&amp;characterEncording=utf-8&amp;allowPublicKeyRetrieval=true -->
    <property name="user">root</property>
    <property name="password">hackyle</property>
    
    <!-- 连接池参数 -->
    <!--初始化申请的连接数量-->
    <property name="initialPoolSize">5</property>
    <!--最大的连接数量,可以根据数据库类型不同设置最优数量,超过最大连接数量就会报错-->
    <property name="maxPoolSize">20</property>
    <!--超时时间(申请连接超过3秒还没成功则报错)-->
    <property name="checkoutTimeout">3000</property>
  </default-config>

</c3p0-config>

创建连接池

package util; //连接池工具类一般放在util包下

import java.sql.Connection;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public final class MyC3P0Pool {
	//使用单例模式创建数据库连接池
	private static MyC3P0Pool instance;
	private static ComboPooledDataSource dataSource;
	
	//单例模式!!!
	private MyC3P0Pool () { //构造函数
		dataSource=new ComboPooledDataSource();
		//防止通过反射进行实例化而破坏单例
		if(instance!=null) {
			throw new RuntimeException("Object has been instanced!!!");
		}
	}
	
	/**
	 * 功能:建立一个连接池(注意:有且仅有一个连接池)
	 * 特性:
	 * 	支持多线程
	 * 	使用单件模式,确保有且仅有一个连接池实例
	 * 
	 * @return ConnectionManager
	 */
	public static final MyC3P0Pool getInstance() {
		if(instance==null) {
			synchronized (MyC3P0Pool.class) {
				try {
					instance=new MyC3P0Pool();
				}catch (Exception e) {
					e.printStackTrace();
				}
			}	
		}
		return instance;
	}
	
	/**
	 * 功能:从连接池中获取一个连接
	 * 
	 * @return
	 */
	public synchronized final Connection getConnection() {
		Connection conn=null;
		try {
			conn=dataSource.getConnection();
		}catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
}

使用连接池

import java.sql.Connection;

public class TestUse {
	public static void main(String[] args) {
		Connection conn = MyC3P0Pool.getInstance().getConnection();
		
		if(conn != null) {
			System.out.println("连接成功:" + conn);
		} else {
			System.out.println("连接失败");
		}
		conn.close(); //用完后返还给连接池
	}
	//输出:连接成功:com.mchange.v2.c3p0.impl.NewProxyConnection@3a4afd8d
}

 

一次点击跑通:用 Postman 自动获取并携带 CSRF token,测试 SAP OData 写操作 SAP OData 写操作自动化测试方案 针对 SAP Gateway OData 服务写操作中常见的 CSRF token 验证问题,本文提出了一套基于 Postman 的自动化解决方案: 问题分析:解释了 CSRF token 的验证机制及其必要性,说明手工测试效率低下的原因 解决方案: 使用 Postman 环境变量存储 token 通过脚本自动获取并传递 token 利用 Collection Runner 实现一键执行 实施步骤: 创建环境变量存储 token 第一个请求获取 token 并存入变 阅读详情

相关推荐

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

清影的博客 6281

JAVA基础之事务

  世界万事无简单一说, 每个事情基本上由多个小的事情来完成。有的事情会存在若小的事情不能同时完成的情况就取消所有的小的事情,直至都完成达到预期的效果才算完成!这样就用到了事务操作。在所有的sql语句完成之前,若发生异常,则让事务回滚到开始事务的时候,让事务结束;并且让已执行的sql语句作废。但是连接数据库的connnection与开启事务的connnection必须是一个。这样原来在d...

dbkfmlw338546的博客 188

天融信防火墙NGFW4000(TG-4628)安装配置笔记

配置一台全新的天融信防火墙NGFW4000,配置完后,内网用户10.10.1.0/24和10.10.2.0/24可以通过防火墙上网,外网用户可以通过访问防火墙的外网接口地址来访问内网的WEB服务器10.10.1.200,并且内网用户也可以通过WEB服务器的外网地址进行访问。 网络说明: 防火墙外网接口地址:218.90.123.121/30 防火墙内网接口地址:19...

weixin_33671935的博客 4454

c3p0详细配置(c3p0-config.xml)及使用

参数详细说明请跳转:数据库连接池c3p0常用配置说明&lt;c3p0-config&gt;&lt;default-config&gt;                &lt;!-- 数据库驱动名 --&gt;                 &lt;property name="driverClass" &gt;&lt;/properties&gt;                &lt;!-- ..

caychen的博客 5万+

SWIFT报文实战指南:从MT700到MT799的信用证操作全解析

本文深入解析了国际贸易中信用证操作的核心SWIFT报文流程,从开证的MT700到各类通知、修改及结算报文(如MT707、MT730、MT754、MT732/734等)。通过实战案例与关键字段拆解,指导外贸与银行从业者精准处理报文,规避风险,并探讨了利用自动化工具提升处理效率的方法,助力保障跨境交易顺畅。

weixin_29015801的博客 878

Ubuntu升级遇到grub-efi-amd64-signed安装失败?3步搞定这个烦人错误

本文深度解析Ubuntu系统升级时grub-efi-amd64-signed安装失败并提示“cannot find EFI directory”错误的根本原因。该错误通常由EFI系统分区挂载异常、BIOS/UEFI引导模式不匹配或dpkg包状态死锁导致。文章提供了三步精准修复流程:首先检查并修复ESP分区挂载,其次处理dpkg依赖问题,最后针对传统BIOS系统提供适配方案,帮助用户安全彻底地解决这一常见升级难题。

r7s8t的博客 398

starbase 数据库使用 (miRNA预测LncRNA)

数据库网址:ENCORI: The Encyclopedia of RNA Interactomes. ENCORI: The Encyclopedia of RNA Interactomes. 1. 打开链接,看到数据库首页 2.点击‘miRNA target’ 下拉按钮,选择miRNA-LncRNA,如下图 3. 点击后可见如下见面: 4. 物种选择‘mouse’,‘microRNA’ 输入待查的miRNA,如mmu-miR-707,enter键确定 5. 得到结果...

sjdaisy的博客 1万+

【温室气体】GOSAT 数据产品

【温室气体】GOSAT 数据产品

WW、forever的博客 238

c3p0-config.xml的使用及常见错误

c3p0-config.xml的使用及常见错误 1.配置c3p0-config.xml的前置环境 2.编写c3p0-config.xml文件 3. 编写工具类 4.测试工具类 5.c3p0-config.xml连接数据库的常见错误

juedaifenghua2的博客 1772

在时间轴上联动多张内表:ABAP 的 PROVIDE ... ENDPROVIDE 区间联动迭代实战

PROVIDE 是 ABAP 中处理有效期区间数据的强大工具,它能自动将多张内表按时间维度切片并联合处理。其核心功能包括:指定区间边界字段(BOUNDS),定义外部总区间(BETWEEN),并通过工作区和标志位(VALID)标识每张表在当前子区间是否生效。该语法特别适合 HR 信息类型等有效期数据,能避免手动处理区间重叠、排序和空档等问题。使用时需注意字段投影(FIELDS)限制、工作区只读原则,以及异常处理(如区间重叠或未排序)。典型应用场景包括员工调岗记录、价格有效期管理等需要时间轴联动的业务逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1670

瑞芯微RV1109平台GT911触摸屏驱动调试记录1

很明显这里可以看到系统已经配置了i2c-0、i2c-1、i2c-3、i2c-4、i2c-5,当开机的时候系统已经将相应的I2C节点注册成功了,说明I2C部分是没有问题的。

bingdund的博客 297

使用c3p0-config.xml文件连接数据库爆红

造成这一种原因有可能是时区问题导致。

Dwwer的博客 631

YOLOv12改进策略【Neck】| arXiv 2024 MAFPN:多分支辅助特征金字塔网络 | 通过双向辅助融合与异构卷积机制,解决传统PAFPN多尺度特征融合不充分与小目标检测不足问题

本文记录的是利用MAFPN颈部结构改进YOLOv12的目标检测网络模型。通过引入双向辅助融合机制优化特征处理流程,在自底向上路径利用 SAF 模块融合主干浅层特征与颈部输出,并保留浅层空间信息,为小目标检测提供更丰富细节;自顶向下路径通过 AAF 模块建立密集连接,聚合浅层高 / 低分辨率层、同级层及前层特征,均衡各层通道数后实现多向梯度信息交互,增强中 / 大目标特征表达。将其应用到中,解决传统特征金字塔在多尺度信息整合中的不足,提升多尺度目标检测的精度与特征表达的丰富性。Multi-Branch Aux

Limiiiing的博客 1254

JDBC从入门到熟练使用——功能类详解、增删改查(CRUD)、sql注入、事务、连接池

一、JDBC入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。 JDBC的作用:可以通过java代码操作数据库 2.jdbc的本质 其实就是java官方提供的一套规范(接口)。用于帮助开发人员快速实现不同关系型数据库的连接! 3.jdbc的快速入门程序 导入jar包 注册驱动 Class.forName("c

weixin_45195665的博客 8万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JDBC和数据库连接池。

▶ 概述JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。Java程序员使用JDBC, 可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。▶ 原理示意图▶ JDBC的好处JDBC是Java提供一套用于数据库操作的接口API, Java程序员只需要面向这套接口编程即可。不同的数据库厂商,需要针对这套接口,提供不同实现。▶ API。...

yzh2776680982的博客 2937

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JDBC快速入门

JDBC快速入门

m0_62036548的博客 1253

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

快速入门JDBC

在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。Statement对象的作用就是用来执行SQL语句。而针对不同类型的SQL语句使用的方法也不一样。执行DDL、DML语句执行DQL语句该方法涉及到了ResultSet对象,而这个对象我们还没有学习,一会再重点讲解。封装了SQL查询语句的结果。ResultSet executeQuery(sql) :执行DQL 语句,返回 ResultSet 对象那么我们就需要从ResultSet。

2301_81313775的博客 734

JDBC连接池技术详解

本文介绍了JDBC连接池的作用与常见实现,如Druid和HikariCP,通过连接池优化数据库连接管理,减少资源消耗,提升系统性能。详细演示了Druid和HikariCP的配置与使用,帮助开发者高效处理数据库连接问题。

m0_73941339的博客 1460

JDBC教程:JDBC连接Mysql数据库超详细讲解(从入门到熟练使用)

带你快速入门掌握!包括导包步骤以及功能类详解、增删改查(CRUD)、sql注入、事务、连接池...

kkkyyy0817的博客 4万+

二十五、JDBC和数据库连接池

这篇文章是关于JDBC和数据库连接池的详细介绍。内容包括JDBC的基本概念、快速入门指南,包括如何添加驱动、执行SQL语句、获取数据库连接的五种方式、使用ResultSet和Statement对象,以及如何避免SQL注入。文章还深入探讨了JDBC API、事务处理、批处理、数据库连接池的基础知识和应用实例,包括C3P0和Druid连接池的使用。此外,还介绍了Apache DBUtils工具的使用,以及如何通过DAO模式进行数据库的增删改查操作。适合数据库开发人员和Java开发者阅读。

weixin_44063529的博客 1317

JDBC快速入门:看我如何用JDBC数据库连接池,轻松解决大量并发请求问题!

JDBC连接池,全称为Java多线程数据库连接池,是一种用于管理数据库连接的技术。其主要作用是减少每次请求时创建和释放数据库连接的开销,以此提高系统性能。在应用程序和数据库之间,JDBC连接池会建立一个连接池,当需要访问数据库时,无需每次都重新创建连接,而是直接从池中获取已有的连接。总结一下就是:数据库连接池是个容器,负责分配、管理数据库连接(Connection)它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。

云端源想的博客 1204

JDBC使用连接池技术

数据库连接池概述 数据库连接池是一种提高数据库连接效率的技术,通过预先创建并管理多个数据库连接对象,解决传统方式中频繁创建连接导致的性能问题。主要优势包括: 避免重复创建连接,提升性能 控制最大连接数,防止服务器过载 提供连接复用机制 常见连接池产品包括Druid、HikariCP等,均实现javax.sql.DataSource接口。连接池配置包含初始连接数、最大连接数、最小/最大空闲连接数等关键参数。 Druid连接池使用步骤: 引入依赖包 配置属性文件 通过工厂创建DataSource 获取连接并进行

weixin_63855746的博客 760

JDBC常见的几种连接池使用

数据库连接池是一种管理数据库连接的技术,它可以在应用程序启动时创建一定数量的数据库连接,并将这些连接保存在一个连接池中。当应用程序需要访问数据库时,可以从连接池中获取一个空闲的连接,使用完毕后再归还给连接池。这样可以提高应用程序访问数据库的效率,减少数据库连接的开销。

2301_80263923的博客 1812

JDBC和连接池(包含遇到常见错误解析)

*** 演示简单操作*///前置工作:在项目下创建文件夹 如 libs//将mysql.jar 拷贝到 libs ,再ADD进数据库//1、注册驱动//2、得到连接//解读 1、jdbc:mysql:// 规定的表示协议,通过jdbc方式连接mysql//2、localhost 表示主机,可以使用 ip 地址//3、3306 表示 该主机的mysql 监听端口//4、xcz03 表示想连接到哪个数据库//5、mysql 连接本质上就是之前学过的 socket 连接。

qq_67247090的博客 2202

JDBC 和数据库连接池

1 JDBC 概述 1.1 基本介绍 JDBC 为访问不同数据库提供了统一的接口,为使用者屏蔽了细节问题。 Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。 JDBC的基本原理图【重要!】 模拟JDBC package com.xjs.jdbc.myjdbc; /** * @author 谢家升 * @version 1.0 * 我们规定的jdbc接口(方法) */ public interface JdbcInter

要学就学灰太狼的博客 3151

jdbc快速入门

JDBC是Java操作关系型数据库的标准API,提供了一套统一的接口规范。它由Sun公司定义接口,各数据库厂商实现驱动包。JDBC的主要优势在于代码通用性,无需针对不同数据库单独开发。基本使用流程包括:注册驱动、获取连接、定义SQL、执行SQL、处理结果和释放资源。核心API包括DriverManager(驱动管理)、Connection(数据库连接)、Statement(SQL执行)和ResultSet(结果集)。JDBC还支持事务管理,通过Connection的setAutoCommit、commit和

2303_79249212的博客 836
上一篇: 【JDBC】使用DBUtils管理SQL的执行
下一篇: 【MySQL】数据类型的基本用法
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值