Java的数据库编程-----JDBC

目录

一.JDBC概念&使用条件:

二.mysql-connector驱动包的下载与导入:

三.JDBC编程:

使用JDBC编程的主要五个步骤:

完整流程1(更新update):

完整流程2(查询query):


一.JDBC概念&使用条件:

  • JDBC基本概念:

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

  • JDBC使用条件:

1).编程语言,如Java,C、C++、Python等

2).数据库,如Oracle,MySQL,SQL Server等(本文主要演示MySQL数据库)

3).数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提 供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的, 要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。

  • mysql-connector驱动包:

由于每个数据库,本身已经有一套API了,比如MySQL,本身的API,就是C语言的API,这时就需要我们把原生的C的API转换成为兼容JDBC的Java的API。MySQL官方提供了一个mysql-connector-->这个驱动包就可以帮助我们完成上述操作.mysql-connector不是mysql自带的,也不是java自带的,需要通过第三方途径,把这个驱动包下载下来并导入到自己的项目中(第三方库),主要由三个途径进行下载:

  1. 去Oracle官网进行下载
  2. 去github
  3. 去maven中央仓库(这种方法最为简便,下面例子以这个为主)

maven中央仓库网址:Maven Repository: Search/Browse/Explore (mvnrepository.com)
JDBC优势:

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

二.mysql-connector驱动包的下载与导入:

  • 进入上述网址后,直接搜索mysql就行了,你会看到一下两个主要版本:
  • 进入后选择适合自己的版本进行下载:
  • 接下来我们在已经创建号的项目中,选中项目,右击鼠标新建一个目录,名字随便取,不要包含中文/特殊字符~
  • 复制我们刚才下载好的.jar文件,将其粘贴到刚才创建的lib目录中 :
  • 右击刚才的lib目录,add as library(意在告诉IDEA,这个lib目录是一个"库"目录):
  • 直接点🆗就行了:
  • 此时你会看到lib目录下多了以下内容,就说明驱动包导入成功了:

完成上述操作后,我们就可以进行JDBC编程了

三.JDBC编程:

使用JDBC编程的主要五个步骤:

    1. 创建数据源对象:
java 复制代码
DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/itcast?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");//用户名
        ((MysqlDataSource) dataSource).setPassword("2222");//密码

url参数说明:

    1. 和数据库服务器建立网络连接.:
java 复制代码
Connection connection = dataSource.getConnection();
    1. 构造 SQL 语句:
java 复制代码
 String sql = "delete from student where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1, id);
    1. 把 SQL 发送到服务器上进行执行:
java 复制代码
 int n = statement.executeUpdate();
        System.out.println(n);//返回值就表示, 这个 sql , 影响到 几行
    1. 释放上述的资源:
java 复制代码
 statement.close();
 connection.close();

Statement对象 :

Statement对象主要是将SQL语句发送到数据库中。JDBC API中主要提供了三种Statement对象:

主要两种执行SQL的方法:

  • executeQuery() 方法执行后返回单个结果集的,通常用于select语句
  • executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete 语句

ResultSet对象:

  • ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法提供 了对这些行中数据的访问。
  • ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当 前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next() 方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

完整流程1(更新update):

java 复制代码
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class TestJDBC1 {
    public static void main(String[] args) throws SQLException {
        // 0. 让用户输入 id 和 name
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入id: ");
        int id = scanner.nextInt();
//        System.out.println("请输入name: ");
//        String name = scanner.next();

        // 1. 创建数据源对象
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/itcast?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("2222");

        // 2. 和数据库服务器建立网络连接.
        Connection connection = dataSource.getConnection();
        // System.out.println(connection);

        // 3. 构造 SQL 语句
        //    PreparedStatement 基于这个类, 构造 SQL
        // String sql = "insert into student values(" + id + ", '" + name + "')";
        // String sql = "insert into student values (?, ?)";
        String sql = "delete from student where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1, id);
        // statement.setString(2, name);

        // 4. 把 SQL 发送到服务器上进行执行
        //    返回值就表示, 这个 sql , 影响到 几行
        int n = statement.executeUpdate();
        System.out.println(n);

        // 5. 释放上述的资源
        statement.close();
        connection.close();
    }
}

注意:

完整流程2(查询query):

java 复制代码
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestJDBC2 {
    public static void main(String[] args) throws SQLException {
        // 1. 创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/itcast?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("2222");

        // 2. 建立连接
        Connection connection = dataSource.getConnection();

        // 3. 构建 sql
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);

        // 4. 执行 sql, 这一步和前面不一样
        ResultSet resultSet = statement.executeQuery();

        // 5. 遍历结果集合
        while (resultSet.next()) {
            // 循环里针对一行进行处理,打印列表和mysql中查询的结果一致
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString("name"));
        }

        // 6. 关闭对应的资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

结语: 写博客不仅仅是为了分享学习经历,同时这也有利于我巩固知识点,总结该知识点,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进。同时也希望读者们不吝啬你们的点赞+收藏+关注,你们的鼓励是我创作的最大动力!

相关推荐
深栈解码2 分钟前
JMM深度解析(三) volatile实现机制详解
java·后端
liujing1023292914 分钟前
Day04_刷题niuke20250703
java·开发语言·算法
Brookty16 分钟前
【MySQL】JDBC编程
java·数据库·后端·学习·mysql·jdbc
能工智人小辰30 分钟前
二刷 苍穹外卖day10(含bug修改)
java·开发语言
DKPT31 分钟前
Java设计模式之结构型模式(外观模式)介绍与说明
java·开发语言·笔记·学习·设计模式
缘来是庄33 分钟前
设计模式之外观模式
java·设计模式·外观模式
先做个垃圾出来………1 小时前
SQL的底层逻辑解析
数据库·sql
LL.。1 小时前
同步回调和异步回调
开发语言·前端·javascript
码不停蹄的玄黓1 小时前
深入拆解MySQL InnoDB可重复读(RR)隔离级别:MVCC+临键锁如何「锁」住一致性?
数据库·mysql·可重复读
0wioiw01 小时前
Python基础(吃洋葱小游戏)
开发语言·python·pygame