MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第1张图片

前言

SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言,它用于定义、操作和管理数据库中的数据。SQL是一种通用的语言,可以用于多种关系型数据库管理系统(RDBMS),如MySQL、Oracle、SQL Server等。

MySQL是一种开源的关系型数据库管理系统,它使用SQL作为其查询语言。MySQL是最流行的开源数据库之一,它具有高性能、可靠性和可扩展性。MySQL支持多用户、多线程和多表操作,可以在各种操作系统上运行。

MySQL最为最流行的开源数据库,其重要性不言而喻,也是大多数程序员接触的第一款数据库,深入认识和理解MySQL也比较重要。

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第2张图片

本篇博客介绍JDBC,Java Database Connectivity,简称jdbc,翻译过来就是 Java 数据库连接,阐述了JDBC的编程思想,介绍了各个API接口的分工,并且对于JDBC相关的类进行详细的分析。

其他相关的JDBC博客文章如下:

Java连接SQL数据库 & 单例封装数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6IBnBmB-1683902514958)(D:\javalearn\思维导图笔记\mdPictures\image-20230512204643739.png)]

本系列文章合集如下:

【合集】MySQL的入门进阶强化——从 普通人 到 超级赛亚人 的 华丽转身

目录

  • 引出
  • JDBC它是什么
  • JDBC编程思想
    • JDBC流程
      • 编写流程
    • JDBC规范架构
    • API分工
  • JDBC类的分析
    • DriverMananger类
      • 1. 作用
      • 2. 静态方法
      • 3. 连接字符串:
      • 4. 连接数据库代码
    • Connection接口
      • 1. 介绍
      • 2. 方法
    • PreparedStatement接口
      • 1. Statement和PreparedStatement
      • 2. PreparedStatement接口中方法
    • ResultSet接口
      • 1. 作用
      • 2. 如何获取数据
      • 3. 方法
      • 4. MySQL中数据类型与Java数据类型对应关系
      • 5. 查询代码
  • 总结

引出


1.介绍JDBC,Java Database Connectivity,简称jdbc,翻译过来就是 Java 数据库连接;
2.阐述了JDBC的编程思想,介绍了各个API接口的分工;
3.对于JDBC相关的类进行详细的分析;

JDBC它是什么

1、JDBC全称Java Database Connectivity,简称jdbc,翻译过来就是 Java 数据库连接

2、JDBC是一组API,通过这些API可以很轻松的操作各种数据库。

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第3张图片JDBC:Java DataBase Connectivity (Java 数据库连接),使用Java语言来操作关系型数据库的一组API(应用程序接口),JDBC本质上是一组接口,实现类由数据库厂商提供。

JDBC编程思想

高度封装,操作数据库只需要和API (接口和类,几个对象)打交道,具体实现交给JDBC来完成即可。

  • 跨数据库

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第4张图片
如果没有JDBC,我们在会根据每种数据库,都要单独编写一组代码。

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第5张图片
我们只需要针对JDBC接口进行编程即可,好处:

  • 降低我们的代码与具体数据库之间耦合度。
  • 同一套代码可以访问不同的数据库
  • 也是多态的好处体现

实现类称为数据库驱动包,需要额外从网上下载。

JDBC流程

左边是客户端Java代码,右边是服务器端MySQL

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第6张图片

编写流程

  1. 注册驱动程序 (从JDK5可以省略,Class.forName("com.mysql.jdbc.Driver"))
  2. 获取连接对象
  3. 通过连接对象获取语句对象
  4. 发送SQL语句给数据库服务器,由服务器去执行SQL语句。
  5. 获取数据库返回的结果集,处理结果集。
  6. 关闭连接,释放资源

JDBC规范架构

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第7张图片

驱动就是由不同厂商提供的jar包。

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第8张图片

API分工

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第9张图片

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第10张图片

JDBC类的分析

DriverMananger类

1. 作用

  1. 加载并且注册数据库驱动
  2. 获取连接对象

2. 静态方法

public static Connection getConnection(String 连接字符串, String 用户名, String 密码) throws SQLException

3. 连接字符串:

不同的数据库,连接字符串的格式不同。MySQL的连接字符串:

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第11张图片

MySQL的连接URL编写方式

jdbc:mysql://主机名称:mysql服务端口号/数据库名称?参数=值&参数=值

jdbc:mysql://localhost:3306/persondb?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8

4. 连接数据库代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class AppDemo1 {
    public static void main(String[] args) throws SQLException {
        //获取连接对象,Connection是一个接口,返回的是它的实现类,这是一种多态。实现类由MySQL驱动提供。
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/woniu", "root", "root");
        //输出连接对象
        System.out.println("连接对象:" + connection);
        //关闭连接对象
        connection.close();
    }
}

Connection接口

1. 介绍

Connection代表连接对象,是一个接口,由数据库厂商提供实现类。

2. 方法

创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。

PreparedStatement prepareStatement(String sql) 参数是SQL语句,占带有占位符,占位符使用问号?表示。

PreparedStatement接口的实现类由数据库驱动提供

注:所有的参数使用占位符,为什么使用占位符:

  1. 可以避免SQL注入的风险
  2. 占位符是可变的,查询语句更加灵活。

PreparedStatement接口

1. Statement和PreparedStatement

获取访问数据库的语句对象:

  1. Statement:父接口,有SQL注入的安全问题,在后期很少使用。
  2. PreparedStatement:子接口,预编译的语句对象,执行效率更高,没有安全问题,使用这个。
interface PreparedStatement extends Statement

2. PreparedStatement接口中方法

PreparedStatement接口中的方法 描述
int executeUpdate() 执行增删改的操作,返回值:影响的行数
ResultSet executeQuery() 执行查询的操作,返回值:返回结果集
void set数据类型(int 占位符位置,类型类型 真实的值) 替换SQL语句中占位符为真实的值: 参数1:在SQL语句中占位符出现的位置,从1开始 参数2:替换这个占位符的值

ResultSet接口

1. 作用

封装服务器端返回的数据,我们只需要从ResultSet中取出数据即可。

2. 如何获取数据

MySQL进阶(再论JDBC)——JDBC编程思想的分析 & JDBC的规范架构 & JDBC相关的类分析_第12张图片

3. 方法

方法名 作用
boolean next() 将光标从当前位置向下移动一行。如果下一行有数据,返回true,如果到最后返回false
数据类型 get数据类型(int 列号) 通过列号获取数据
数据类型 get数据类型(String 列名) 通过列名获取数据

4. MySQL中数据类型与Java数据类型对应关系

Java数据类型 数据库数据类型
int、long INT、BIGINT
String CHAR、VARCHAR
java.sql.Date、java.sql.Time、java.sql.Timestamp DATE、TIME、DATETIME
float、double FLOAT、DOUBLE、DECIMAL

5. 查询代码

import java.sql.*;
public class AppDemo1 {
    public static void main(String[] args) throws SQLException {
        //获取连接对象,Connection是一个接口,返回的是它的实现类,这是一种多态。实现类由MySQL驱动提供。
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/woniu", "root", "root");
        //输出连接对象
        System.out.println("连接对象:" + connection);
        //创建语句对象:查询所有教学部的老师
        PreparedStatement prepareStatement = connection.prepareStatement("select * from teacher where depart=?");
        //替换占位符
        prepareStatement.setString(1, "教学部");
        //执行查询操作,返回结果集
        ResultSet resultSet = prepareStatement.executeQuery();
        //遍历结果集
        while (resultSet.next()) {
            //建议基本类型都使用包装类
            Integer id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            Date birthday = resultSet.getDate("birthday");
            String depart = resultSet.getString("depart");
            Double salary = resultSet.getDouble("salary");
            System.out.println("编号:" + id + "\t姓名:" + name + "\t生日:" + 
                               birthday + "\t部门:" + depart + "\t工资:" + salary);
        }
        //关闭连接对象:先开的后关
        resultSet.close();
        prepareStatement.close();
        connection.close();
    }
}

总结


1.介绍JDBC,Java Database Connectivity,简称jdbc,翻译过来就是 Java 数据库连接;
2.阐述了JDBC的编程思想,介绍了各个API接口的分工;
3.对于JDBC相关的类进行详细的分析;

你可能感兴趣的:(#,Database,mysql,架构,数据库)