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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 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编程还是很有意义的。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
缓存 测试技术 API
API的封装步骤流程
API封装流程是一个系统化的过程,旨在将内部功能转化为可复用的接口供外部调用。流程包括明确需求、设计接口、选择技术和工具、编写代码、测试、文档编写及部署维护。具体步骤为确定业务功能、数据来源;设计URL、请求方式、参数及响应格式;选择开发语言、框架和数据库技术;实现数据连接、业务逻辑、错误处理;进行功能、性能测试;编写详细文档;部署并持续维护。通过这些步骤,确保API稳定可靠,提高性能。
|
2月前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
Java开发者必知:JDBC连接数据库的“三大法宝”
19 7
|
10天前
|
存储 数据库 Python
python的对象数据库ZODB的使用(python3经典编程案例)
该文章介绍了如何使用Python的对象数据库ZODB来进行数据存储,包括ZODB的基本操作如创建数据库、存储和检索对象等,并提供了示例代码。
16 0
|
10天前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
24 0
|
2月前
|
存储 监控 测试技术
构建高效后端API的五个关键步骤
【8月更文挑战第26天】在数字化时代,后端API的设计和实现对整个应用的性能和用户体验起着至关重要的作用。本文将介绍如何通过五个关键步骤来构建一个高效的后端API,包括需求分析、设计原则、数据模型设计、API测试以及监控与优化。我们将通过实际代码示例来展示每个步骤的关键要点,帮助开发者理解并实践构建高效API的过程。
|
2月前
|
安全 API 开发工具
开发api数据接口的工作步骤
本文概述了使用Python的Flask框架开发简单API数据接口的基本步骤。首先,需明确API提供的数据及其来源,确保数据的真实可靠。其次,选择合适的开发工具和技术栈,如Python结合Flask,并安装所需环境。编写代码时,应导入必要模块、创建应用实例、定义数据、设计路由及处理函数,并考虑错误处理和日志记录。测试阶段,在本地启动服务器并使用工具验证功能和性能。最后,选择合适平台部署API,并确保其稳定性和安全性。在整个过程中,需注重数据安全、代码质量及系统性能优化。
|
2月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
67 0
|
2月前
|
存储 SQL 数据库
|
2月前
|
Java 测试技术 API
构建高效RESTful API的五个关键步骤
【8月更文挑战第31天】在数字化时代,RESTful API成为连接不同软件系统的重要桥梁。本文旨在通过五个关键步骤引导开发者构建高效的RESTful API,包括设计、实现、测试、部署和维护。我们将探讨每个步骤的重要性,并提供实用的代码示例。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的指导和灵感。
|
2月前
|
SQL 数据库 索引
SQL 编程最佳实践简直太牛啦!带你编写高效又可维护的 SQL 代码,轻松应对数据库挑战!
【8月更文挑战第31天】在SQL编程中,高效与可维护的代码至关重要,不仅能提升数据库性能,还降低维护成本。本文通过案例分析探讨SQL最佳实践:避免全表扫描,利用索引加速查询;合理使用JOIN,避免性能问题;避免使用`SELECT *`,减少不必要的数据传输;使用`COMMIT`和`ROLLBACK`确保事务一致性;添加注释提高代码可读性。遵循这些实践,不仅提升性能,还便于后期维护和扩展。应根据具体情况选择合适方法并持续优化SQL代码。
28 0
下一篇
无影云桌面