JDBC编程步骤、JDBC API详解和数据库连接池

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: JDBC编程步骤、JDBC API详解和数据库连接池

前言:

JDBC 就是使用Java语言操作关系型数据库的一套API ,全称:( Java DataBase Connectivity ) Java 数据库连接。官方(sun公司)定义的一套操作所有关系型数据库的规则,即

接口各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

JDBC的好处:

各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发可随时替换底层数据库,访问数据库的Java代码基本不变。

使用JDBC需要由数据库厂商提供驱动包,可以在中央仓库下载好驱动包导入项目。

中央仓库地址:https://mvnrepository.com/search?q=mysql

https://mvnrepository.com/search?q=mysql

JDBC编程步骤

JDBC编写代码具体步骤:

1.创建工程,导入驱动jar包

2.注册驱动

3.获取连接

4.拼装sql语句

5.获取执行sql对象并填充占位符

6.执行sql

7.处理结果

8.释放资源

注意:mysql 5 以后注册驱动可以省略了。

JDBC编程示例:

public static void main(String[] args) throws Exception {
    //1.注册驱动
    Class.forName("com.mysql.jdbc.Driver");
    //2.获取连接
    String url = "jdbc:mysql://127.0.0.1:3306/db1?characterEncoding=utf8&useSSL=false";
    String username = "root";
    String password = "1234";
    Connection connection = DriverManager.getConnection(url,username,password);
    //3.拼装sql
    String sql = "select * from account";
    //获取执行sql的对象
    Statement statement = connection.createStatement();
    //执行sql
    ResultSet ret = statement.executeQuery(sql);
    List<Account> list = new ArrayList<>();
    while (ret.next()){
        Account account = new Account();
        account.setId(ret.getInt(1));
        account.setName(ret.getString(2));
        account.setMoney(ret.getString(3));
        list.add(account);
    }
    System.out.println(list);
    //释放资源
    ret.close();
    statement.close();
    connection.close();
}


JDBC API详解

DriverManager

DriverManager(驱动管理类)作用:注册驱动和获取数据库连接。

1.注册驱动

Class.forName("com.mysql.jdbc.Driver");

查看Driver类源码:


在该类中的静态代码块中已经执行了 DriverManager 对象的registerDriver() 方法进行驱动的注册了,那么我们只需要加载 Driver 类,该静态代码块就会执行。而 Class.forName("com.mysql.jdbc.Driver"); 就可以加载Driver 类。MySQL 5之后的驱动包,可以省略注册驱动的步骤自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类。

2.获取连接

Connection connection = DriverManager.getConnection(url,username,password);

url是连接路径,user是用户名,password是密码。

关于url连接路径:

语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2…

示例:jdbc:mysql://127.0.0.1:3306/db1

如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称?参数键值对配置 useSSL=false 参数,禁用安全连接方式,解决警告提示。

Connection

Connection(数据库连接对象)作用:获取执行 SQL 的对象和管理事务。

关于事务管理示例:

 

MySQL的事务管理:

开启事务:BEGIN; / START TRANSACTION;

提交事务:COMMIT;

回滚事务:ROLLBACK;

MySQL默认自动提交事务

JDBC 事务管理:Connection接口中定义了3个对应的方法

开启事务:setAutoCommit(boolean autoCommit):true为自动提交事务;false为手动提交事务,即为开启事务

提交事务:commit()

回滚事务:rollback()

Statement

Statement作用:执行SQL语句。

Int  executeUpdate(sql):执行修改、插入、删除语句

返回值:(1) 返回修改插入语句影响的行数 (2) 删除语句执行后,执行成功也可能返回0

ResultSet executeQuery(sql):执行查询语句

返回值: ResultSet 结果集对象

ResultSet

ResultSet(结果集对象)作用:封装了DQL查询语句的结果。

示例:

PreparedStatement

PreparedStatement作用:预编译SQL语句并执行,预防SQL注入问题。

关于SQL注入,SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。

示例:


PreparedStatement 好处:预编译SQL,性能更高;防止SQL注入,将敏感字符进行转义。

PreparedStatement 原理:

在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)执行时就不用再进行这些步骤了,速度更快。如果sql模板一样,则只需要进行一次检查、编译,后序语句直接就可以执行了。

数据库连接池

数据库连接池是个容器,负责分配、管理数据库连接(Connection)。它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

好处:资源重用、提升系统响应速度、避免数据库连接遗漏。

 

数据库连接池实现:

标准接口:DataSource,官方(SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。

以下为德鲁伊Driud数据库连接池使用步骤:

1.导入jar包 druid-1.1.12.jar(中央仓库下载)

2.定义配置文件

3.加载配置文件

 

 

4.获取数据库连接池对象

5.获取连接

......

代码示例:


现在已经有了一些库和框架,对JDBC进行了进一步的封装,使用起来就非常方便了,比如MyBatis。但是框架一直在变更,JDBC是恒定的,所以掌握JDBC编程还是很有意义的。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
9月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
251 16
|
10月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
331 19
|
9月前
|
JSON API 开发者
shopee商品列表API接口获取步骤
虾皮(Shopee)商品列表 API 接口用于获取平台商品信息,支持按店铺 ID、类目、关键词等筛选条件查询商品数据,包括商品基本信息、图片、描述等。接口具备灵活性、数据丰富及分页机制等特点,满足电商数据分析与管理需求。示例代码展示了通过 Python 请求 API 获取某店铺商品列表的过程,包含请求头设置、参数定义及异常处理等功能,便于开发者快速上手使用。
|
9月前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
9月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
JSON API 数据安全/隐私保护
淘宝评论API接口操作步骤详解,代码示例参考
淘宝评论API接口是淘宝开放平台提供的一项服务,通过该接口,开发者可以访问商品的用户评价和评论。这些评论通常包括评分、文字描述、图片或视频等内容。商家可以利用这些信息更好地了解消费者的需求和偏好,优化产品和服务。同时,消费者也可以从这些评论中获得准确的购买参考,做出更明智的购买决策。
|
SQL Java 数据库连接
JDBC编程安装———通过代码操控数据库
本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细
|
负载均衡 安全 API
小红书商品详情API接口获取步骤
获取小红书商品详情API接口需先注册账号并实名认证,阅读API文档后,通过编程语言调用API,构建请求参数,处理返回数据。确保应用支持高并发,遵守安全规范,申请API权限,查阅接口文档,进行开发调试。
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
216 1
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
1480 1