网易首页 > 网易号 > 正文 申请入驻

膜拜!清华学霸亲码JDBC速成笔记,看完才知道源码如此简单

0
分享至

Hello,今天给各位童鞋们分享的是JDBC,赶紧拿出小本子记下来吧

1、 简介

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

Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰

出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。

JDBC可以在各种平台上使用Java,如Windows,Mac OS和各种版本的UNIX。

JDBC库包括通常与数据库使用相关的下面提到的每个任务的API。

连接数据库。

创建SQL或MySQL语句。

在数据库中执行SQL或MySQL查询。

查看和修改生成的记录。

2 、JDBC体系结构

JDBC API支持用于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成:

JDBC API:这提供了应用程序到JDBC管理器连接。

JDBC驱动程序API:这支持JDBC管理器到驱动程序连接。

JDBC API使用驱动程序管理器和特定于数据库的驱动程序来提供与异构数据库的透明连接。

3、JDBC核心组件

DriverManager: 此类管理数据库驱动程序列表。使用通信子协议将来自java应用程序的连接请求

与适当的数据库驱动程序匹配。

Driver:此接口处理与数据库服务器的通信,我们很少会直接与Driver对象进行交互。而是使用

DriverManager对象来管理这种类型的对象。

Connection:该界面具有用于联系数据库的所有方法。连接对象表示通信上下文,即,与数据库

的所有通信仅通过连接对象。

Statement:使用从此接口创建的对象将SQL语句提交到数据库。除了执行存储过程之外,一些派

生接口还接受参数。

ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。它作为一

个迭代器,允许我们移动其数据。

SQLException:此类处理数据库应用程序中发生的任何错误

4、CRUD语法介绍

SQL 是一种标准化的语言,它允许你在数据库上执行操作,如创建项目,查询内容,更新内容,并删除条目等操作。

Create, Read, Update, and Delete 通常称为CRUD操作。

5 、使用步骤

构建JDBC应用程序涉及以下六个步骤:

导入包:需要包含包含数据库编程所需的JDBC类的包。大多数情况下,使用import java.sql.*就足够

了。

注册JDBC驱动程序:要求您初始化驱动程序,以便您可以打开与数据库的通信通道。

SQL> CREATE DATABASE DATABASE_NAME;

SQL> DROP DATABASE DATABASE_NAME;

SQL> CREATE TABLE Employees (

id INT NOT NULL,

age INT NOT NULL,

first VARCHAR(255),

last VARCHAR(255),

PRIMARY KEY ( id )

SQL> DROP TABLE table_name;

SQL> INSERT INTO table_name VALUES (column1, column2, …);

SQL> SELECT column_name, column_name, … FROM table_name WHERE conditions;

SQL> UPDATE table_name

SET column_name = value, column_name = value, …

WHERE conditions;

SQL> DELETE FROM table_name WHERE conditions;

打开连接:需要使用DriverManager.getConnection()方法创建一个Connection对象,该对象表

示与数据库的物理连接。

执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。

从结果集中提取数据:需要使用相应的ResultSet.getXXX()方法从结果集中检索数据。

释放资源:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

6、JDBC连接步骤

建立JDBC连接所涉及的编程相当简单。这是简单的四个步骤

导入JDBC包:将Java语言的import语句添加到Java代码中导入所需的类。

注册JDBC驱动程序:此步骤将使JVM将所需的驱动程序实现加载到内存中,以便它可以满足您的JDBC

请求。

数据库URL配置:这是为了创建一个格式正确的地址,指向要连接到的数据库。

创建连接对象:最后,调用DriverManager对象的getConnection()方法来建立实际的数据库连

接。

Class.forName();

注册驱动程序最常见的方法是使用Java的Class.forName()方法,将驱动程序的类文件动态加载到内存

中,并将其自动注册

DriverManager.registerDriver()
第二种方法是使用静态DriverManager.registerDriver()方法。

数据库URL配置

加载驱动程序后,可以使用DriverManager.getConnection()方法建立连接。为了方便参考,让我

列出三个重载的DriverManager.getConnection()方法 -

getConnection(String url)

getConnection(String url,Properties prop)

getConnection(String url,String user,String password)

|RDBMS | JDBC驱动程序名称|网址格式|

|MYSQL8| com.mysql.cj.jdbc.Driver| jdbc:mysql://hostname:3306/databaseName?serverTimezone=UTC|

MySQL |com.mysql.jdbc.Driver | jdbc:mysql://hostname:3306/databaseName |

创建数据库连接对象

完整的连接地址:
版本1:

版本2:

jdbc:mysql://localhost:3306/yhp2?serverTimezone=UTC

使用数据库URL和属性对象
DriverManager.getConnection()方法的第三种形式需要一个数据库URL和一个Properties对象

DriverManager.getConnection(String url, Properties info);

关闭数据库连接
为确保连接关闭,您可以在代码中提供一个“finally”块。一个finally块总是执行,不管是否发生异常。
要关闭上面打开的连接,你应该调用close()方法如下 -

conn.close();

6.1 JDBC执行SQL语句

一旦获得了连接,我们可以与数据库进行交互。JDBC Statement和PreparedStatement接口定义了使

您能够发送SQL命令并从数据库接收数据的方法和属性。

6.2 Statement

创建语句对象

在使用Statement对象执行SQL语句之前,需要使用Connection对象的createStatement()方法创建

一个,如下例所示:

创建Statement对象后,您可以使用它来执行一个SQL语句,其中有三个执行方法之一。

boolean execute(String SQL):如果可以检索到ResultSet对象,则返回一个布尔值true; 否则返

回false。使用此方法执行SQL DDL语句或需要使用真正的动态SQL时。

int executeUpdate(String SQL):返回受SQL语句执行影响的行数。使用此方法执行预期会影响

多个行的SQL语句,例如INSERT,UPDATE或DELETE语句。

ResultSet executeQuery(String SQL):返回一个ResultSet对象。当您希望获得结果集时,请使

用此方法,就像使用SELECT语句一样。

关闭Statement对象

就像我们关闭一个Connection对象以保存数据库资源一样,由于同样的原因,还应该关闭Statement对象。

一个简单的调用close()方法将执行该作业。如果先关闭Connection对象,它也会关闭Statement对象。但是,应始终显式关闭Statement对象,以确保正确清理。

6.3 SQL注入

就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执

行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎

执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据

库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过

WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。

7、PreparedStatement(预状态通道)

该PreparedStatement的接口扩展了Statement接口,它为您提供了一个通用的Statement对象有两

个优点附加功能。

此语句使您可以动态地提供参数。

JDBC中的所有参数都由?符号,这被称为参数标记。在执行SQL语句之前,必须为每个参数提供值。

所述的setXXX()方法将值绑定到所述参数,其中XXX代表要绑定到输入参数的值的Java数据类型。如果忘记提供值,将收到一个SQLException。

每个参数标记由其顺序位置引用。第一个标记表示位置1,下一个位置2等等。该方法与Java数组索引不同,从0开始。

关闭PreparedStatement对象

就像关闭Statement对象一样,由于同样的原因,还应该关闭PreparedStatement对象。

一个简单的调用close()方法将执行该作业。如果先关闭Connection对象,它也会关闭

PreparedStatement对象。但是,应始终显式关闭PreparedStatement对象,以确保正确清理。

对比statement和PreparedStatement;

(1)statement属于状态通道,PreparedStatement属于预状态通道

(2)预状态通道会先编译sql语句,再去执行,比statement执行效率高

(3)预状态通道支持占位符?,给占位符赋值的时候,位置从1开始

(4)预状态通道可以防止sql注入,原因:预状态通道在处理值的时候以字符串的方式处理

8、ResultSet

SELECT语句是从数据库中选择行并在结果集中查看行的标准方法。该java.sql.ResultSet中的接口表示

结果集数据库查询。

ResultSet对象维护指向结果集中当前行的游标。术语“结果集”是指包含在ResultSet对象中的行和列数

据。

如果没有指定任何ResultSet类型,您将自动获得一个TYPE_FORWARD_ONLY。

好啦,今天的文章就到这里了,希望能够帮助到屏幕前迷茫的你们

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
楚阿梅尼:我们看了巴拉圭踢德国的比赛,我们将迎来一场硬仗

楚阿梅尼:我们看了巴拉圭踢德国的比赛,我们将迎来一场硬仗

懂球帝
2026-07-01 08:05:27
87岁的聂荣臻元帅接受采访,当谈到彭老总时:长征时他才三十多岁

87岁的聂荣臻元帅接受采访,当谈到彭老总时:长征时他才三十多岁

大江
2026-07-01 14:26:05
国务院:探索延长义务教育年限

国务院:探索延长义务教育年限

第一财经资讯
2026-07-01 00:30:02
民警张义文,牺牲在女儿高考前一个月

民警张义文,牺牲在女儿高考前一个月

深圳晚报
2026-06-30 17:55:34
理发店成片倒闭,真不是没人剪头发,而是把客人做没了!

理发店成片倒闭,真不是没人剪头发,而是把客人做没了!

猫叔东山再起
2026-06-14 12:30:06
大爆冷!国乒女团决赛1:3不敌日本,遗憾无缘冠军,梯队建设堪忧

大爆冷!国乒女团决赛1:3不敌日本,遗憾无缘冠军,梯队建设堪忧

国乒二三事
2026-06-30 20:51:59
男篮世青赛爆发大冲突!全场4人被驱逐:中国小将劝架被打还挨罚

男篮世青赛爆发大冲突!全场4人被驱逐:中国小将劝架被打还挨罚

篮球快餐车
2026-07-01 02:00:52
劝中老年人:再有钱有闲,也不要经常去这9个地方,去多了会后悔

劝中老年人:再有钱有闲,也不要经常去这9个地方,去多了会后悔

小马达情感故事
2026-06-30 16:49:17
安吉丽娜·朱莉离婚十年罕见剖白:我再没恋爱,现在想重新活一次

安吉丽娜·朱莉离婚十年罕见剖白:我再没恋爱,现在想重新活一次

赴一场山海啊
2026-07-01 01:08:02
黔灵山猴子抢走女子GUCCI包咬烂 景区拒绝赔偿:不属于管辖范畴

黔灵山猴子抢走女子GUCCI包咬烂 景区拒绝赔偿:不属于管辖范畴

中国能源网
2026-06-30 18:35:08
卢卡申科是真清醒,向中国求援称不需要武器,只想要中方帮三个忙

卢卡申科是真清醒,向中国求援称不需要武器,只想要中方帮三个忙

古史青云啊
2026-07-01 14:35:26
这个一妻多夫制的民族,晚上怎么过?女人直言:简直就是受罪

这个一妻多夫制的民族,晚上怎么过?女人直言:简直就是受罪

哄动一时啊
2026-06-24 14:26:23
王菲又把便宜货穿出了高攀不起的样子!西安古城路人狂拍也不刻意

王菲又把便宜货穿出了高攀不起的样子!西安古城路人狂拍也不刻意

老吴教育课堂
2026-06-30 13:06:48
苹果向长鑫采购存储计划面临搁浅:后者优先保证小米、阿里等中国厂商供应

苹果向长鑫采购存储计划面临搁浅:后者优先保证小米、阿里等中国厂商供应

快科技
2026-07-01 08:37:18
德媒:纳格尔斯曼不太可能辞职,他合同的剩余薪水还有1400万欧

德媒:纳格尔斯曼不太可能辞职,他合同的剩余薪水还有1400万欧

懂球帝
2026-07-01 16:40:07
过期一天就绝对不能碰的10种危险食物,第一名多数人舍不得扔

过期一天就绝对不能碰的10种危险食物,第一名多数人舍不得扔

坠入二次元的海洋
2026-07-01 00:20:36
季后赛硬汉全不要?佩总复刻20年夏迷之操作 西部第一概率大跌22%

季后赛硬汉全不要?佩总复刻20年夏迷之操作 西部第一概率大跌22%

颜小白的篮球梦
2026-07-01 16:00:14
良性肿瘤变肝癌,山东一男子CT报告时隔8年出现反转,医院回应:家属取报告时间太早,次日才确定结论,确有未及时通知的问题,愿沟通赔偿

良性肿瘤变肝癌,山东一男子CT报告时隔8年出现反转,医院回应:家属取报告时间太早,次日才确定结论,确有未及时通知的问题,愿沟通赔偿

大风新闻
2026-07-01 10:21:03
镰田大地:除非足球成为日本的国球,否则很难拿下世界杯冠军

镰田大地:除非足球成为日本的国球,否则很难拿下世界杯冠军

懂球帝
2026-07-01 16:20:23
姆巴佩只谈团结,这支法国队只有阿根廷配得上顶峰相见?

姆巴佩只谈团结,这支法国队只有阿根廷配得上顶峰相见?

澎湃新闻
2026-07-01 11:14:27
2026-07-01 18:27:00
张范娱乐厅
张范娱乐厅
带给你不一样的娱乐信息
108文章数 240关注度
往期回顾 全部

科技要闻

Claude Code被曝“植入木马”识别中国用户

头条要闻

"霉霉"婚礼庆典细节披露:千人出席禁用手机 封街3天

头条要闻

"霉霉"婚礼庆典细节披露:千人出席禁用手机 封街3天

体育要闻

卖球衣救子的门将,把德国扑出了世界杯

娱乐要闻

张凌赫:我连心疼你都隔着时差

财经要闻

新氧贷款:宣传年化15%,实际顶格24%

汽车要闻

半程收官 上汽集团销量突破200万辆

态度原创

本地
数码
时尚
手机
公开课

本地新闻

强烈建议,全国高校都向这所大学看齐!

数码要闻

七彩虹正式推出PRIME全新存储系列:锁定B端长期供应

Meiinpsn的穿衣风格,清新又叛逆

手机要闻

消息称新一轮涨价AOVMHh都逃不掉,骁龙8E6旗舰预计起步6K+

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版