【Java教程】Day18-01 JDBC:简介

​1. 关系数据库简介

在介绍JDBC之前,我们先来简单了解一下关系数据库的基本概念。

程序运行时,数据通常保存在内存中。而当程序终止时,数据需要保存到磁盘,无论是本地磁盘还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。如何定义数据存储格式成为一个重要的问题。我们可以通过多种方式来存储数据,以下是几种常见格式的示例:

1.1 文本文件存储格式

例如,保存一个班级所有学生的成绩单,可以将数据存储在一个文本文件中,每一行保存一个学生的姓名和成绩,用逗号(,)分隔:

 
Michael,99Bob,85Bart,59Lisa,87

1.2 JSON格式存储

另一种存储方式是使用JSON格式,这也是一种常见的文本格式:

 
json[    {"name":"Michael","score":99},    {"name":"Bob","score":85},    {"name":"Bart","score":59},    {"name":"Lisa","score":87}]

 

1.3 存储的挑战

虽然上述存储格式简单易懂,但存储和读取过程需要我们自己实现。特别是当数据量庞大时(例如,40GB的蓝光电影),这些格式可能无法快速查询,因为它们只能通过加载所有数据到内存中进行遍历。而且当我们自己定义格式时,可能会出现不同的存储方式,不同格式间无法直接交换或高效查询。

为了克服这些问题,关系数据库应运而生,提供了更为高效的存储、管理和查询数据的方案。

2. 关系数据库的概念

2.1 关系模型

关系数据库的核心概念是关系模型。关系模型基于数学理论构建,通过表格的方式将数据进行结构化存储。我们可以将数据组织为多个表格(表),并通过这些表格之间的关系来高效查询和管理数据。

举个例子,假设有一个学校,其中包含多个年级和班级,年级和班级之间是“多对多”的关系,可以通过两张表来表示:

  • Grade 表:记录每个年级的信息。

  • Class 表:记录每个班级的信息,并通过grade_id字段来与Grade表建立关联。

2.2 SQL查询

在关系数据库中,查询数据是通过SQL(结构化查询语言)来实现的。例如,我们可以通过如下的SQL查询来查找年级ID为1的所有班级:

 
sqlSELECT * FROM classes WHERE grade_id = '1';

 

返回的结果也是一个表格:

grade_idclass_idname
111一年级一班
112一年级二班
113一年级三班

 

类似地,班级表(Class)中的每一行记录,也可以关联到学生表(Student)的多行记录,形成复杂的数据关联结构。

3. 数据库的分类

3.1 商用数据库

关系数据库的种类繁多,常见的商用数据库包括:

  • Oracle:一种高端数据库,广泛应用于企业级解决方案。

  • SQL Server:由微软开发,特别适用于Windows平台。

  • DB2:IBM推出的数据库,主要用于大型企业级应用。

  • Sybase:曾是微软的合作伙伴,现已衰退。

3.2 开源数据库

由于商业数据库价格昂贵,尤其在需要大量部署时,开源数据库成为了广泛应用的选择。常见的开源关系数据库包括:

  • MySQL:使用最广泛的开源关系数据库。

  • PostgreSQL:功能强大,适合学术研究,但在行业应用中的知名度不如MySQL。

  • SQLite:轻量级数据库,适合嵌入式系统和桌面应用。

 

作为Java开发者,最推荐使用MySQL,因为它拥有广泛的社区支持、丰富的工具和文档,且适用性强。

4. 安装 MySQL

4.1 下载与安装

为了继续本教程的学习,你需要从MySQL官方网站下载并安装MySQL Community Server版本(免费版)。根据你的操作系统选择合适的安装文件并安装即可。

  • Windows用户:在安装时请选择UTF-8编码,以确保中文字符正确显示。

  • Mac/Linux用户:需要手动编辑MySQL配置文件,设置字符集为UTF-8。

在配置文件my.cnf中加入以下内容:

 
ini[client]default-character-set = utf8[mysqld]default-storage-engine = INNODBcharacter-set-server = utf8collation-server = utf8_general_ci

 

重启MySQL后,可以通过命令行检查字符集配置:

 
bash$ mysql -u root -pEnter password: mysql> show variables like '%char%';

 

如果显示结果中所有字符集设置为utf8,说明配置成功。

4.2 使用MySQL

安装完成后,你可以通过命令行工具(mysql)或图形化工具(如MySQL Workbench)连接并管理你的数据库。

5. JDBC简介

5.1 什么是JDBC

JDBC(Java Database Connectivity)是Java与数据库之间的标准接口,它允许Java程序通过统一的方式访问不同的数据库。JDBC并不直接与数据库通信,而是通过JDBC驱动来实现与数据库的连接和数据交互。

5.2 JDBC的工作原理

JDBC接口是Java标准库提供的一个接口包java.sql,而具体的数据库连接实现由数据库厂商提供的JDBC驱动完成。例如,MySQL的JDBC驱动由Oracle提供。Java代码只需引用相应数据库的JDBC驱动,通过JDBC接口与数据库进行交互。

以下是JDBC的工作流程:

  1. Java应用程序通过JDBC接口发送数据库请求。

  2. JDBC接口通过JDBC驱动将请求转化为特定数据库的通信协议。

  3. 数据库响应请求并返回数据,JDBC驱动将其转化为Java对象返回给应用程序。

5.3 JDBC驱动架构

JDBC的架构如下所示:

 
graphql┌───────────────┐│  Java App     │└───────────────┘┌───────────────┐│ JDBC Interface│└───────────────┘┌───────────────┐│ JDBC Driver   │└───────────────┘┌───────────────┐│   Database    │└───────────────┘

 

每个数据库厂商提供的JDBC驱动是一个实现了JDBC接口的Java类库。通过这些驱动,Java程序能够访问不同的数据库。

6. JDBC的优势

使用JDBC的主要优势包括:

  • 统一的接口:不同数据库厂商提供相同的接口,Java程序无需为不同数据库编写单独的代码。

  • 数据库独立性:Java程序依赖标准的java.sql包,不依赖具体的数据库实现。

  • 灵活的底层数据库切换:在不修改Java代码的前提下,可以方便地切换底层数据库,只需要替换JDBC驱动即可。

小结

在本教程中,我们了解了JDBC的基本概念和工作原理。JDBC提供了一种统一的方式来访问不同的数据库,这使得Java程序能够高效地与数据库进行交互。在实际开发中,了解和掌握JDBC是每个Java开发者必须具备的技能。

希望你已经对JDBC有了初步的了解,接下来的学习将会深入探讨如何使用JDBC进行数据库操作。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值