Mysql JDBC编程千字详细概述(附有maven项目和java项目的具体演示)

一.基本概述:

1.1 JDBC的全称:

java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的java API,是由java厂商指定的接口(一套规范),java程序会通过这套接口与不同的数据库进行相连接,而不是直接与各个数据库进行连接,你可能又会问,这套java API是什么呢?欲听后事如何,请看后面详解,(本人水平有限,尽可能用通俗易懂的语言概括,阅读过程可能会有些枯燥,请耐心看完,遇到不懂的地方,先试着接受下来,当然可能也有不准确的地方,欢迎各位大佬在评论区批评指正啦!(狗头JPG~))

1.2 场景模拟(JDBC的引入):

市面上的数据库有很多,java程序在连接不同的数据库时肯定要编写不同的方法去与不同的数据库进行连接管理,这样就不利于程序的管理,而且可移植性极差而且假如说数据库升级了,那么我们java程序用以前的方法就连接不上数据库了,所以java厂商就制定一套规范(接口),接口里面有很多抽象方法,而方法的具体实现只需要各个数据库根据这套规范来编写不同的方法来实现即可,在java程序中统一调用接口中的方法即可

1.3 JDBC API的概念:

JDBC API是一系列的接口,它统一和规范了应用程序与数据库的连接,执行SQL语句,并得到返回结果等各类操作,相关类和接口在java.sql与javax.sql包中

1.4 JDBC带来的好处:

JDBC是java提供一套用于数据库操作接口的API,java程序员只需要面向接口编程即可,不同的数据库厂商,需要针对这套接口提供不同的实现类即可,这样程序的可移植性就比较高(后面演示JDBC连接数据库的时候可以体现,有很多重复的代码可以提取到工具类中),而且JDBC为不同的数据库提供了统一的接口,还为使用者屏蔽了细节问题

如下图演示:

  • image-20241008190059324

二.JDBC编程演示的五个步骤

1.载入驱动,将指定的驱动内容载入程序,并在指定的驱动管理器中注册
1.1为什么要载入驱动呢?

从下图中可以很清楚的看到应用程序使用JDBC访问不同的数据库中,都需要不同的数据库驱动进行连接,所以我们第一步就是载入驱动

image-20241008190125480

1.Class forName(“com.mysql.jdbc.Driver”);—–推荐使用反射的方法,驱动只需要加载一次,后续我们将它写到静态方法中,用来提取工具类

2.com.mysql.jdbc.Driver driver =new com.mysql.jdbc.Driver();

1.2具体实现代码
 Class.forName("com.mysql.jdbc.Driver");
2.建立连接
2.1具体实现代码
 Connection con= DriverManager.getConnection(url,username,password);
  • String url=“要连接的数据库的url地址 :父协议:子协议://数据库的服务器:端口号/数据库名称”

  • String user =“登录的用户名”:root

  • String passwprd=“登录mysql的密码”:root

3. 生成语句对象,负责SQL语句的提交
3.1具体实现代码
 Statement statement= con.createStatement();
String sql="select*from users";
 ResultSet res=statement.executeQuery(sql);
while(res.next()){
            //读取第一行
            //读取指针所指向的那一行数据   ResultSet中有很多getXXX方法来读取每个字段的值,XXX是由字段的类型来选择
            System.out.println("用户id"+res.getInt(1));
            System.out.println("用户名"+res.getString(2));
            System.out.println("密码"+res.getString(3));
            System.out.println("邮箱"+res.getString(4));
            System.out.println("出生日期"+res.getDate(5));

        }

Statement statement=connection.createStatement();

String sql=“”;

statement .excute(sql)- - ->提交任意的sql语句 返回值为true,代表有结果集Statement。statement.getResultSet()去遍历结果集

ResultSet res=statement.Query(sql)- - ->提交查询语句

int n=new

4. 返回结果,处理返回结果,遍历返回集
4.1具体实现代码
ResultSet res=statement.executeQuery(sql);
while(res.next()){
            //读取第一行
            //读取指针所指向的那一行数据   ResultSet中有很多getXXX方法来读取每个字段的值,XXX是由字段的类型来选择
            System.out.println("用户id"+res.getInt(1));
            System.out.println("用户名"+res.getString(2));
            System.out.println("密码"+res.getString(3));
            System.out.println("邮箱"+res.getString(4));
            System.out.println("出生日期"+res.getDate(5));

        }
5.释放资源—关闭对象
5.1具体实现代码
  //5. 释放资源–关闭对象
            if(res!=null){
                res.close();
            }
            if(statement!=null){
                statement.close();
            }
            if(con!=null){
                con.close();
            }

三.JDBC编程在maven项目和java项目下的具体演示

1.演示一:在maven项目中进行JDBC编程
1.1 说明

在Maven项目中进行JDBC编程的好处就是:Maven仓库中放有jar包,而Maven仓库分为三级,分别是本地仓库、远程仓库和中央仓库,在进行编程中无需下载mqsql驱动程序的jar包,程序会自动的从本地仓库中寻找,如果没找到,会往它的上一级去找,如果还没找到,还是会往他的上一级仓库:中央仓库寻找,而我们的mysql驱动程序jar包在中央仓库中,我们这时需要将该jar包的地址写入pom.xml文件中(pom.xml文件是创建maven项目中自动生成的,用来管理依赖),jar包在仓库中的地址可以去: https:\mvnrepository.com/官网去查询,jar包的地址有:公司的id,项目的id,版本号 三个部分构成,分别写入pom.xml文件当中

1.2前置工作的准备,

在依赖文件中写入jar包在中央仓库的地址

image-20240926090433893

image-20241008190210713

image-20241008190222263

image-20241008190243166

image-20241008190329704

image-20241008190344988

image-20241008190355472

image-20241008190437404

image-20241008190448526

  1. image-20241008190510704

image-20241008190535708

image-20241008190609721

2. 建立连接
3.生成语句对象,负责提交SQL语句
4.返回结果,处理返回结果

Statement的对象用来表示的是语句对象,负责提交sql语句

executeQuery()提交查询 select 返回

ResultSet的对象表示的是查询的结果集

newt()移动指针,如果有数据可读,返回true;否则返回false

getXxx(index) Xxx表示字段类型 index标识字段的索引下标

不用索引下标也可以

getXxx(字段名) 参数列表中放字段名

5. 释放资源–关闭对象

maven项目,pom.xml文件 管理依赖

mysql驱动程序 .jar

maven仓库里面放的jar包 中央仓库 、 远程仓库 、本地仓库

jar包有地址,java程序通过jar包的地址来访问仓库中的jar包

公司的id

四.分层编写代码

数据库访问的操作放到一层上 - - - - - -数据访问层

业务逻辑的代码放到一层上 - - - - - -业务逻辑层

1.提取工具类
1.1代码演示
package hbsi.edu.utils;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @author 程奕红
 * @version 1.0
 */
public class DBUtil {
    //1.方法能够建立链接,并将连接对象返回,驱动只需要完成一次
    //2.提供方法释放资源
    static{
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    public  static Connection getConnection() throws SQLException {
        String url="jdbc:mysql:///myjdbc";
        String username="root";
        String password="root";
        return (Connection) DriverManager.getConnection(url,username,password);
    }
    //提供方法释放资源
    public static  void release(Statement statement,Connection connection){
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
    public  static void release(ResultSet res, Statement statement,Connection connection) throws SQLException {
        if(res!=null){
            res.close();
        }
        if(statement!=null){
            statement.close();
        }
        if(connection!=null){
            connection.close();
        }


    }
}


Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐