前言:
大家好,我是良辰丫,💞💞💞JDBC全称为Java Database Connectivity,可以叫做Java数据库连接,可以将java代码与sql语句进行连接,是不是很神奇呢?我们慢慢去学习JDBC的相关操作.💟💟💟

🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
💦期待大家三连,关注,点赞,收藏。
💌作者能力有限,可能也会出错,欢迎大家指正。
💞愿与君为伴,共探Java汪洋大海。


JDBC

  • 1 .简述JDBC
  • 2. JDBC驱动包
  • 3. JDBC代码的编写
  • 3.1 创建好数据源
  • 3.2 代码与数据库建立连接
  • 3.3 让用户通过控制台输入一下待插入的数据.
  • 3.4 操作数据库
  • 3.5 执行数据库
  • 3.6 释放资源
  • 4. JDBC插入数据完整代码


1 .简述JDBC

JDBC,全称为Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由java.sql.,javax.sql. 包中的一些类和接口组成,它为Java开发人员操作数据库提供供了一个标准的API,可以为多种关系数据库提供统一访问.

在以后工作后,很少用sql语句直接操作数据库,我们会通过代码操作或者公司提供的软件进行点点点.

那么问题就来了,这么多数据库软件,而且也不是一家公司,那么他们与java代码进行连接的时候各种数据库软件是否提供相同的API呢?显然是不同的API,不同的开发人员,没有进行任何约定,那么他们弄的API肯定是不同的.

如果有不同的API,程序员在使用不同的数据库软件就需要用到不同的API,那就真的是哭了程序员,要学习各种各样的API.这个时候呢,java就给了他们一个要求,要想使用java,必须对各自API进行一定的包装,让java程序员不管使用哪个数据库软件,都调用相同名字的API.

JDBC的优点:

  • Java语言访问数据库操作完全面向抽象接口编程
  • 开发数据库应用不用限定在特定数据库厂商的API
  • 程序的可移植性大大增强

2. JDBC驱动包

所谓数据库驱动包,是数据库厂商,提供一个程序,来完成对API的转换(对原生API封装),再根据java提供的要求,形成JDBC的形状.

程序员要想进行JDBC代码的编写,必须在项目中导入对应的数据库驱动包,要想导入驱动包,先得下载驱动包.

java官方为我们提供了一种中央仓库,maven仓库,相当于我们手机上的应用商店,我们下载某一款游戏时,不用专门去官网下载,直接在应用商店下载就可以了.大家没必要去记官网,直接在浏览器上搜索maven仓库就可以了.

pgsql类型与java类型对应 sql语句和java的关系_API

点进上述箭头,进行下载,注意我们下载的驱动包要和数据库的大版本一致,什么叫大版本,就拿我的mysql软件来说,我的版本是8以上的.如下图,我们在下载JDBC的时候也要下载大版本为8的,小版本不做要求.

pgsql类型与java类型对应 sql语句和java的关系_java_02

pgsql类型与java类型对应 sql语句和java的关系_java_03

这里还需要强调的是,下载好的驱动包,不必解压,java可以识别数据库驱动包的压缩包文件.

到了这里,我们就需要把JDBC的驱动包导入我们的代码中,我们先创一个文件夹lib用于存放驱动包文件,直接复制压缩包文件,点击lib文件,ctrl+v复制即可.

pgsql类型与java类型对应 sql语句和java的关系_pgsql类型与java类型对应_04

然后我们右击lib,选择Add as Library,执行完这一步操作,idea就能识别目录里的jar
wenj

pgsql类型与java类型对应 sql语句和java的关系_API_05

3. JDBC代码的编写

3.1 创建好数据源

DataSource dataSource = new MysqlDataSource();
        // 设置数据库所在的地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/stu2?characterEncoding=utf8&useSSL=false");
        // 设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        // 这个是设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("");

3306为数据库默认端口号,SSL是加密协议,false表示未加密,127.0.0.1为环路ip(表示自己主机ip),root为用户名,默认都是root,密码为数据库的密码,我没有设置密码,所以为空字符串.

3.2 代码与数据库建立连接

Connection connection = dataSource.getConnection();

3.3 让用户通过控制台输入一下待插入的数据.

Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号: ");
        int id = scanner.nextInt();
        System.out.println("请输入姓名: ");
        String name = scanner.next();

3.4 操作数据库

String sql = "insert into student values(?, ?)";
        // 此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);
        // 进行替换操作.
        statement.setInt(1, id);
        statement.setString(2, name);
        System.out.println("statement: " + statement);

3.5 执行数据库

int ret = statement.executeUpdate();
        System.out.println(ret);

3.6 释放资源

statement.close();
        connection.close();

接着我们来执行一下代码

pgsql类型与java类型对应 sql语句和java的关系_sql_06

然后呢,我们来看一下数据库的信息.

pgsql类型与java类型对应 sql语句和java的关系_sql_07

4. JDBC插入数据完整代码

//import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import com.mysql.cj.jdbc.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);

        // 1. 创建好数据源
        DataSource dataSource = new MysqlDataSource();
        // 设置数据库所在的地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/stu2?characterEncoding=utf8&useSSL=false");
        // 设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        // 这个是设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("");

        // 2. 让代码和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

        // 2.5 让用户通过控制台输入一下待插入的数据.
        System.out.println("请输入学号: ");
        int id = scanner.nextInt();
        System.out.println("请输入姓名: ");
        String name = scanner.next();

        // 3. 操作数据库->插入数据
        //    关键所在就是构造一个 SQL 语句~
        //    在 JDBC 中构造的 SQL, 不必带上 ;
        //    ; 只是在命令行中用来区分不同的语句. 现在是直接在代码中操作~~
        String sql = "insert into student values(?, ?)";
        // 此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);
        // 进行替换操作.
        statement.setInt(1, id);
        statement.setString(2, name);
        System.out.println("statement: " + statement);

        // 4. 执行 SQL , 相当于扫码取件
        //    SQL 里面如果是 insert, update, delete, 都使用 executeUpdate 方法.
        //    SQL 里面如果是 select, 则使用 executeQuery 方法.
        //    返回值就表示这个操作, 影响到了 几行. 就相当于在控制台里输入 sql 之后, 得到的数字~
        int ret = statement.executeUpdate();
        System.out.println(ret);

        // 5. 此时 SQL 已经执行完毕. 然后还需要释放资源.
        statement.close();
        connection.close();
    }
}

后序:
读了这篇文章,想必大家对JDBC编程有了一定的认识和了解,希望小小的文章可以帮到大家,我们下一篇文章再见.🍬🍬🍬