对数据库连接工件JDBC的组成和工作原理进行了全面分析!

小夏 科技 更新 2024-01-30

在这里云源想要它对你的帮助容易学习 IT”。

嗨,你今天过得怎么样?

这个世界上一定有另一个我。

做我不敢做的事。

过我想过的生活。

JDBC(J**A Database Connectivity)是一个用于执行 SQL 语句的 J**A API,它是 J**A 和数据库之间的桥梁,是一个规范而不是一个实现,可以交给数据库来执行 SQL 语句。

在信息时代,数据库已成为存储和管理数据的重要工具。 作为一种广泛使用的编程语言,J**a 与数据库的交互尤为重要。 JDBC就是为了解决这个问题而诞生的。

通过JDBC,我们可以在J**A程序中方便地执行SQL语句,实现对数据库的增删改查操作。 今天我们要谈谈JDBC的概念。

概念:

JDBC (J**A 数据库连接):J**A 数据库连接技术。

具体来说,就是通过J**A连接各种数据库,对表中的数据进行增删改查等操作的技术。 如图所示

从本质上讲,JDBC 与图形客户端执行相同的操作,即将 SQL 操作发送到数据库。 不同的是,图形界面中的操作是图形化的、愚蠢的,而JDBC需要编码(这个时候不要想JDBC怎么写,也不要想它有多难)才能完成图形化操作的效果。

也就是说,JDBC本质上是一种发送SQL操作数据库的客户端技术,但需要通过J**A编码来完成。

它的作用:

通过JDBC技术与数据库交互,以J**A语言向数据库发送SQL语句,可以对数据进行增删减、修改、查询等操作,更高效、更安全地管理数据。

JDBC 是数据库和 J**A** 之间的桥梁(链接)。

JDBC由一组用J**A语言编写的类和接口组成,主要包括驱动程序管理、连接接口、语句接口和结果集接口。

连接接口

定义:JDBC程序中用来表示数据库的连接是数据库编程中最重要的对象,客户端和数据库之间的所有交互都是通过连接对象完成的。

connection conn = drivermanager.getconnection(url,user,password);

常用方法:

createstatement() 为要发送到数据库的 SQL 语句创建一个语句对象。

PrepareStatement(SQL):创建一个 preparesatement 对象,用于将预编译的 SQL 发送到数据库。

preparecall(sql):创建执行存储过程的 callablestatement 对象。 (常用)。

setAutoCommit(布尔值自动提交):指定事务是否自动提交。

关闭自动提交事务。

setautocommit(false);

关闭后,您需要手动打开提交事务。

commit() 在链接上提交事务。

rollback() 回滚此链接上的事务。

语句接口

Statement:由 CreateStatement 创建,用于发送简单的 SQL 语句(无参数)。

statement st = conn.createstatement();

PreparedStatement:继承自 Statement API,是 Statement 的子类,可以发送带参数的 SQL 语句。 效率更高,可以防止SQL注入,所以推荐使用。

preparedstatement ps = conn.prepare语句(sql);

PreparedStatement的优点:

语句导致数据库频繁编译SQL语句,可能导致数据库缓冲区溢出。 PreparedStatement可以对SQL语句进行预编译,提高数据库的执行效率。

此外,PreperedStatement 允许在 SQL 中使用占位符替换参数,简化了 SQL 语句的编写,避免了 SQL 注入的问题。

CallableStatement:继承自 PrepareCall 方法创建的 PreparedStatement 接口,用于调用存储过程。

常用方法:

ExecuteQuery(String SQL):用于向数据发送查询语句。

ExecuteUpdate(String SQL):用于向数据库发送INSERT、UPDATE或DELETE语句。

execute(string sql):用于向数据库发送任意SQL语句。

Addbatch(String SQL):将多个SQL语句放入一个批处理中。

executebatch():向数据库发送一批SQL语句执行。

ResultSet 接口

ResultSet:SQL语句的执行结果。

当 ResultSet 封装执行结果时,它采用与 ** 类似的方法,ResultSet 对象维护一个指向 ** 数据行的游标,最初,该游标称为 ResultSet。 在第一行之前next() 方法,可以将光标指向特定的数据行,并调用该方法获取该行的数据。

常用方法:

resultset.next() 到下一行;

resultset.previous() 添加到上一行。

resultset.absolute(int row):移动到指定的行。

resultset.beforeFirst():移动结果集的前面。

resultset.afterlast():移动结果集的最后部。

JDBC的工作原理可以分解为以下步骤:

1.加载并注册 JDBC 驱动程序:

这是建立数据库连接的第一步,我们需要先加载 JDBC 驱动,然后通过 DriverManager 的 RegisterDriver 方法注册。

2.建立数据库连接:

使用 DriverManager 的 getconnection 方法,我们可以建立与数据库的连接。

3.创建语句对象:

使用连接对象的 createstatement 方法,我们可以创建一个用于执行 SQL 语句的语句对象。

4.执行 SQL 语句:

使用 Statement 对象的 ExecuteQuery 或 ExecuteUpdate 方法,我们可以执行 SQL 语句、获取结果或更新数据库。

结果:

对于查询操作,我们需要处理结果集结果集;对于更新操作,我们不需要处理结果。

6.关闭资源:

最后,我们需要关闭开放资源,包括结果集、语句和连接。

让我们看一个如何使用JDBC的简单示例。 假设我们想查询为"students"表中所有数据:

1.在pom中将MySQL驱动程序文件引入XML中

mysqlmysql-connector-j**a

2.加载驱动程序类

class.forname("com.mysql.cj.jdbc.driver");

3.在 J**A 和数据库之间建立连接通道

string url = "jdbc:mydql://locallhost:3306/test";test 是数据库的名称。

string user = "root";

string password = "root";

connection conn = drivermanager.getconnection(url,user,password);

4.创建一个负责“交付订单”的“先驱”目标

string sql ="insert into emp values(null,"醒来","歌手",7956,now(),79429,6799,30,1)";

preparestement ps = conn.preparestement(sql);

5.接收结果集(只有查询具有结果集)。

int row = ps.excuteupdate();保留命令由 mysql 运行。

system.out.println(row + "线路受到影响!");

6.关闭连接通道

ps.close();

conn.close();

如何传递参数

键盘分配。

private static scanner scan;

static{

scan = new scanner(system.in);

连接字符串

占位符方法 '?

使用占位符的好处:

可以有效避免SQL注入问题。

可以根据复制时的数据类型自动决定引入"

删除

物理删除

墓碑

查询操作

全面询价

按 ID 搜索

面向对象是指将多个功能查询划分为多个包,用于添加、删除、修改和查询数据库 (CRUD) 的过程。

db 包

DB 包中只有一个类>DBmanager 类,该类的主要作用是管理数据的连接。

Bean 包角色

一般对应数据库中的表,bean 包中的类一般和表名一样,首字母大写,驼峰名。

DAO 包角色

DAO 是一个数据访问对象,一般以 Bean 包的类名为前缀,以 DAO 结尾,DAO 负责执行 CRUD 操作,而 DAO 类负责表的 CRUD,也可以说是 Bean 类的 CRUD(增、删、改、查询)。

多表查询

以上是JDBC的基本概述,JDBC是一项看似复杂的技术,但实际上是一个非常实用的工具。

只要掌握了窍门,就可以轻松处理和管理数据。 无论您是经验丰富的程序员还是刚刚入门,我都强烈建议您学习 习 并使用 JDBC。 相信我,当你掌握JDBC时,你会发现它给你的工作和习带来了极大的便利。

相似文章

    DBeaver 是用于多数据库连接和数据分析的一体化助手

    Dbe er 是一个强大的数据库管理工具,支持 Hadoop 生态系统中的一些框架,包括 Spark Hive 和流行的 Presto。Presto作为分布式SQL查询引擎,具有高性能和灵活性,通过DBE er连接Presto,我们可以轻松查询和分析数据。值得一提的是,DBE er 的一位前同事是 ...

    我们来谈谈数据库连接池 Druid

    在Spring Boot项目中,数据库连接池已经成为标准配置,但是,我遇到过很多连接池异常导致业务错误的事故。许多有经验的工程师也可能不小心在这方面遇到问题。在本文中,我们将仔细研究数据库连接池,并解释其实现机制,以便更好地理解和规避潜在风险。如果没有连接池,我们可以按如下方式操作数据库 应用程序使...

    数据安全知识 不同类型的数据库

    有许多不同的数据库类型可用,每种类型都有优点和缺点。每种数据库类型都创建一个特定的环境来存储数据和信息之间的关系。关系数据库以类似表的行和列结构存储数据,重点关注数据一致性。此数据库类型侧重于数据之间的关系,是使用最广泛的数据库类型。面向对象数据库将面向对象编程 OOP 原则与关系数据库标准相结合。...

    蚂蚁数据库致力于降本增效

    背景 项目背景 某省级高速中心的清算结算系统一直无法解决数据库设计 选型等相关问题。在某省级高速工程建设过程中,数据库建设方案一直是难点。该项目的建设面临来自两方面的压力 时间短 任务重 在政策方面,某省交通科学研究院责令某省级高速公路尽快实现网络通行费计费 车道数据及现有清汇系统的设计,并做好整改...

    蚂蚁数据库致力于降本增效,一省高速清算结算的实践意义重大

    中国正处于数字化转型的关键时期,高速公路正朝着智慧高速公路的建设迈进。无论是传统的高速卡口,如 数据采集 数据上传 和 数据处理 基础设施时代,或近期将实现具有 车辆协同智能化 边缘控制中心 和 智能高速云控中心 等特点的智慧高速公路建设 在时代,海量数据存储 复杂计算 交互能力将成为关键,而这些都...