iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库 JDBC 编程(Java 连接 MySQL)
  • 305
分享到

MySQL数据库 JDBC 编程(Java 连接 MySQL)

2024-04-02 19:04:59 305人浏览 八月长安
摘要

目录1. 数据库编程的基础条件2. Java 的数据库编程:JDBC3. JDBC 访问数据库的层次结构4. Mysql 数据库操作介绍5. mysql 驱动包的下载及添加到项目6.

1. 数据库编程的基础条件

如果你想实现代码操作数据库,那么以下条件是你实现它的前提

编程语言:

例如 Java、c++python 等等,这些语言都能够实现操作数据库

某个数据库的操作:

例如我在前面章节就介绍了关于 MySQL 的操作,实现其它数据库如 oracleSQL Server 等等也要学会对应数据库的一些操作

安装数据库驱动包:

不同的数据库对应不同的编程语言提供了不同的数据库驱动包,这些驱动包内实现了操作对应数据库的 api

2. Java 的数据库编程:JDBC

由于不同数据库的厂商实现数据库的 API 其实是不太一样的,因此很多语言就把这些数据库的 API 进行再一次的封装,封装出了一套统一的 API。这样就可以通过一套代码来操作多个不同的数据库了

在 Java 中,这样的封装就是由 Java 标准库来完成的,封装出了一套统一的数据库 API 称为 JDBC

拓展:

Java 本身是跨平台语言,虽然不同操作系统提供了不同的 API,但是 Java 本身也把这些 API 封装了起来,在标准库中提供了统一的接口,因此 Java 就可以一次编译,到处运行

JDBC 介绍:

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

注意:

  • JDBC API 是 Java 标准库自带的,可以直接用,但是 MySQL 的 JDBC 驱动不是系统自带的,因此需要额外进行下载安装
  • MySQL 的 JDBC 驱动其实就是对 JDBC API 里面一些类和接口的具体实现

3. JDBC 访问数据库的层次结构

4. MySQL 数据库操作介绍

在前面章节我就介绍了关于 MySQL 的一些知识了,如果你在这方面有漏洞的话,可以直接通过下面的文章来进行补充。

第一章链接: 【MySQL 数据库】数据库的基础知识

第二章链接: 【MySQL 数据库】MySQL 的对库的操作及其数据类型

第三章链接: 【MySQL 数据库】数据表的基本操作

第四章链接: 【MySQL 数据库】数据库的约束及数据表的设计原理

第五章链接: 【MySQL 数据库】聚合查询和联合查询操作

第六章链接: 【MySQL 数据库】MySQL 的索引事务

5. MySQL 驱动包的下载及添加到项目

由于 MySQL 的 JDBC 驱动不是系统自带的,因此需要额外进行下载安装

大数据库的官网就有对应数据库的 JDBC 驱动,但这里我推荐使用一些中央仓库来进行下载,例如 mvnrepository

驱动包下载步骤:

进入 mvnrepository 网站,在搜索栏搜索 MySQL,就可以查询到以下结果

选择第一个 MySQL Connector/J,就可以跳转到下载版本选择的页面

选择好自己对应的数据库版本的驱动(大版本一定要对应,小版本区别不大可以随意选),由于我自己是 5.x 系列的MySQL,因此,我选择大版号是5的就行。选择后就跳到了最终下载的页面

点击 jar 就开始下载了(这个 jar 包就是将这个驱动包中的一些 .class 文件以压缩包的形式进行打包了)

下载完成后,这个驱动包就已经下载到你本地了,只再将它引入到你的项目就可以是用

6. JDBC 使用步骤

6.1 创建数据库源,连接 Connection

创建一个数据库源:


DataSource dataSource=new MysqlDataSource();
// DataSource 是来自于 Java 标准库的一个接口,它用来表示“数据库在哪”
// MysqlDataSource 是来自于 MySQL 的驱动包,它是实现了 DataSource 接口的类

数据库就是一个服务器程序,可以通过 DataSource 来描述服务器的 地址、端口、用户名、密码、要访问的数据库名等

把数据库的位置信息,设置到 DataSource


// 1)通过一个 URL 来表示连接的数据库、数据库的 ip、端口、数据库名、编码方式、是否加密
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&setSSL=false");
// 2)设置登录数据库的用户名
((MysqlDataSource)dataSource).setUser("root");
// 3)设置登录数据库的密码
((MysqlDataSource)dataSource).setPassword("1234");

由于 setURLsetUsersetPassWord 都是 MysqlDataSource 实现的,所以使用时需要向下转型
上述 URL 是一种固定的写法,例如:jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&setSSL=false

  • jdbc 表示使用 JDBC 访问数据库
  • mysql 表示访问的数据库是 MySQL
  • 172.0.0.1 是 IP 地址,IP 地址是用来区分是哪个主机,172.0.0.1 这个 IP 地址表示当前使用的主机自身,因为我的 MySQL 服务器也装在自己电脑上,自行修改
  • 3306 是端口号,这是安装数据库服务器时手动设置的,一般默认是3306,它是用来区分主机上的某个程序
  • test 是要访问的数据库名,这是我数据库里面的,自行修改
  • characterEncoding=utf8 是用来指定编码方式的,此处是使用 utf8,需要和使用的数据库便方式对应,自行修改
  • useSSL=false 是用来表示是否加密的,此处表示不加密,自行修改

连接数据库,进行真正的网络通信:


Connection connection=dataSource.getConnection();


Connection 是 Java 标准库里的,虽然 MySQL 驱动里面也有。它是用来进行和数据库服务器进行网络连接的
getConnection 用于获得试图建立到指定数据库 URL 的连接,如果连接成功就返回一个 Connection 对象,如果失败就抛出异常
由于 getConnection 可能会连接失败(例如 IP 地址、端口等输入错误),因此就需要在方法声明时通过 throws 给上层调用者抛出异常或者使用 try-catch 去处理异常

6.2 构造 SQL 语句,为执行的操作做准备

通过字符串,构造一个要执行的 sql


// 例如要执行新增元素操作(表名为 student,有两列 id 和 student
Scanner scanner=new Scanner(System.in);
System.out.print("请输入 id:");
int id=scanner.nextInt();
System.out.print("请输入 姓名:");
String name=scanner.next();
String sql="insert into student values(?,?)";

  1. sql 就是构造的 SQL 语句,里面就是要执行的具体操作
  2. sql 语句中可以不用加分号
  3. 表示通配符,可以通过它对 sql 语句里的内容进行动态替换,需要替换的内容用 ?代替,后续再使用 PreparedStatement 对象的一些方法将其再替换成具体要更改的值

例如:

void setInt(int paramenterIndex, int x) :paramenterIndex 表示 sql 语句中要替换通配符的具体位置(从1开始),x 表示要替换掉具体值
void setString(int parameterIndex, String x) :paramenterIndex 表示 sql 语句中要替换通配符的具体位置(从1开始),x 表示要替换掉具体值
通过 prepareStatement(sql) 方法,将构造的字符串 sql 转化成真正的数据库底层的 SQL 语句


PreparedStatement statement=connection.prepareStatement(sql);
// 通过 setInt 方法,将 SQL 语句中的第一处通配符进行具体值的替换
statement.setInt(1,id);
// 通过 setString 方法,将 SQL 语句中的第二处通配符进行具体值的替换
statement.setString(2,name);

JDBC 中,使用 Connection 和数据库建立了连接对象 connection,那么 connection 就可以调用 prepareStatement(String sql) 方法对参数 sql 指定的 SQL 语句进行编译预处理,生成该数据库底层的内部命令,并将该命令封装在 PreparedStatement 对象中

6.3 执行 SQL,并处理结果集

通过 PreparedStatement 对象的 executeQuery 或者 executeUpdate 方法来执行 SQL

如果是执行内容变更的操作(增加、修改、删除),就使用 int executeUpdate() 方法


int ret=statement.executeUpdate();
// executeUpdate 的返回结果是执行该操作后影响的行数

// 可以通过打印返回值来显示影响的行数
System.out.println("ret: "+ret);

如果要是要执行查询操作,就使用 ResultSet executeQuery() 方法


ResultSet resultSet=statement.executeQuery();
// executeQuery 的返回结果是执行该操作后查询到的类似于临时表的结构,存放在 ResultSet 对象中

// 接下来我们可以对它进行遍历,类似于迭代器的遍历,方法如下
while(resultSet.next()){
    // 假设有两列 id 和 name
    int id=resultSet.getInt(id);
    String name=resultSet.getString(name);
    System.out.println("id="+id+", name="+name);
}

SQL 查询语句对数据库的查询操作将返回一个 ResultSet 对象,ResultSet 对象由按列(字段)组织的数据行构成
ResultSet 对象一次只能看到一行数据,使用 next() 方法,可以移到下一个数据行(类似于 i++)
可以使用 ResultSet 对象的 getXxx() 方法,去获得字段。常用方法后面讲将介绍

6.4 释放资源

当我们执行完了我们的 SQL 语句后,如果不再使用某些对象,就需要把连接关闭,释放掉对应的资源


// 如果有 ResultSet 对象不需要使用后,需要关闭这个连接
resultSet.close();

// Connection 不需要使用后,需要关闭这个连接
connection.close();

// PreparedStatement 不需要使用后,需要关闭这个连接
statement.close();

ResultSetConnectionPreparedStatement 这些对象都对应着一些及机器的硬件资源,如果不使用的话就要及时还回去。就类似于借书,如果大家在图书馆只借书,不还书,那么图书馆的书籍资源就会一直减少
这些对象可以使用 close() 方法,来关闭和客户端与服务器建立的连接,以此释放占用的资源

6.5 JDBC 编程模板

通过上面五步,就可以进行基础的 Java 的 JDBC 编程了,虽然方法不止这一种,但如果你还不会的话,掌握这个方法就行了。最后再总结下整个的模板,依据它,我们就可以用 Java 语言对 MySQL 数据库进行各种操作


public static void test(){
    // 1. 创建数据库源,连接 Connection
 DataSource dataSource=new MysqlDataSource();
    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
    ((MysqlDataSource)dataSource).setUser("root");
    ((MysqlDataSource)dataSource).setPassword("1234");
    Connection connection=dataSource.getConnection();

    // 2. 构造一个 SQL 语句,为要进行的操作做准备
    String sql="";
    PreparedStatement statement=connection.prepareStatement(sql);

 // 3. 执行 SQL,并处理结果集
    int ret=statement.executeUpdate();

    // 4. 执行完成,释放资源
    statement.close();
    connection.close();
}

7. JDBC 常用接口和类

上述 JDBC 编程步骤中已经将以下接口和类介绍了很多,所以可以互相补充漏洞

7.1 DataSource 和 MysqlDataSource

补充:

上述代码也可以直接使用 MysqlDataSource 来创建一个数据源,这样就可以不用使用向下转型了。但是如果使用 DataSource 的话,那么代码中其它代码其实都是使用 DataSource 这个类型的,这是和具体数据库类型无关的类,当你需要切换数据库时,就不需要大幅度修改代码

7.2 Connection

Connection 接口实现类由数据库提供,获取 Connection 对象通常有两种方式:

方式一: 通过 DataSource(数据源)对象获取


// 创建一个数据库源
DataSource dataSource=new MysqlDataSource();

// 设置数据库具体信息
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("1234");

// 创建数据库连接
Connection connection=dataSource.getConnection();

方式二: 通过 DriverManager(驱动管理类)的静态方法获取


// 加载 JDBC 驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");

// 创建数据库连接
Connection connection=DriverManager.getConnection(url);

MySQL 数据库驱动程序被封装在 Driver 类中,该类的包名是 com.mysql.cj.jdbc,该类不是 Java 运行环境类库中的类

上述两种方式的区别:

  • DriverManager 类来获取的 Connection 连接,是无法重复利用的,每次使用完以后释放资源时,通过 connection.close() 都是关闭物理连接
  • DataSource 提供连接池的支持。连接池在初始化时创建一定数量的数据库连接,这些连接是可以重复利用的,每次使用完数据库连接,通过 connection.close() 释放资源,都是将 Connection 连接对象回收

7.3 PreparedStatement

PreparedStatement 是 JDBC API 提供的三种可以将 SQL 语句发送到数据库的对象之一。这里对这三种做一个简单介绍

  • Statement: 用于执行不带参数的简单 SQL
  • PreparedStatement
  1. 用于执行带或者不带参数的 SQL 语句
  2. SQL 语句会预编译在数据库系统
  3. 执行速度快于 Statement 对象
  • CallableStatement: 用于执行数据库存储过程的调用

7.4 ResultSet

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

常见 ResultSet 对象方法:

注意:

ResultSet 对象和数据库连接对象 Connection 实现了紧密连接,一旦连接对象被关闭,ResultSet 对象中的数据就会立刻消失

8. Java 操作数据库实例

8.1 往表中新增数据

在 student 表中新增学生 id 和 name:


public static void testInsert() throws SQLException {
    DataSource dataSource=new MysqlDataSource();
    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
    ((MysqlDataSource)dataSource).setUser("root");
    ((MysqlDataSource)dataSource).setPassword("1234");
    Connection connection=dataSource.getConnection();
    Scanner scanner=new Scanner(System.in);
    System.out.print("请输入id:");
    int id=scanner.nextInt();
    System.out.print("请输入姓名:");
    String name=scanner.next();
    String sql="insert into student values(?,?)";
    PreparedStatement statement=connection.prepareStatement(sql);
    statement.setInt(1,id);
    statement.setString(2,name);
    int ret=statement.executeUpdate();
    System.out.println("ret: "+ret);
    statement.close();
    connection.close();
}

8.2 删除表中的数据

在表名为 student 的表中,删除学生表中符合 id 条件的记录:


public static void testDelete() throws SQLException {
    DataSource dataSource=new MysqlDataSource();
    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
    ((MysqlDataSource)dataSource).setUser("root");
    ((MysqlDataSource)dataSource).setPassword("1234");
    Connection connection=dataSource.getConnection();
    Scanner scanner=new Scanner(System.in);
    System.out.print("请输入要删除的 id:");
    int id=scanner.nextInt();
    String sql="delete from student where id=?";
    PreparedStatement statement=connection.prepareStatement(sql);
    statement.setInt(1,id);
    int ret=statement.executeUpdate();
    System.out.println("ret: "+ret);
    statement.close();
    connection.close();
}

8.3 修改表中的数据

在表名为 student 的表中,将符合 id 条件的学生姓名进行修改:


public static void testUpdate() throws SQLException {
    DataSource dataSource=new MysqlDataSource();
    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
    ((MysqlDataSource)dataSource).setUser("root");
    ((MysqlDataSource)dataSource).setPassword("1234");
    Connection connection=dataSource.getConnection();
    Scanner scanner=new Scanner(System.in);
    System.out.print("情输入你要更改的学生 id:");
    int id=scanner.nextInt();
    System.out.print("请输入你要更改后的学生姓名:");
    String name=scanner.next();
    String sql="update student set name=? where id=?";
    PreparedStatement statement=connection.prepareStatement(sql);
    statement.setString(1,name);
    statement.setInt(2,id);
    int ret=statement.executeUpdate();
    System.out.println("ret: "+ret);
    statement.close();
    connection.close();
}

8.4 查找表中的数据

查找表名为 student 的表中的所有数据:


public static void testSelect() throws SQLException {
    DataSource dataSource=new MysqlDataSource();
    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
    ((MysqlDataSource)dataSource).setUser("root");
    ((MysqlDataSource)dataSource).setPassword("1234");
    Connection connection=dataSource.getConnection();
    String sql="select * from student";
    PreparedStatement statement=connection.prepareStatement(sql);
    ResultSet resultSet=statement.executeQuery();
    while(resultSet.next()){
        int id=resultSet.getInt("id");
        String name=resultSet.getString("name");
        System.out.println("id = "+id+", name = "+name);
    }
    resultSet.close();
    statement.close();
    connection.close();
}

到此这篇关于MySQL数据库 JDBC 编程(Java 连接 MySQL)的文章就介绍到这了,更多相关Java 连接 MySQL内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库 JDBC 编程(Java 连接 MySQL)

本文链接: http://www.lsjlt.com/news/159422.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库 JDBC 编程(Java 连接 MySQL)
    目录1. 数据库编程的基础条件2. Java 的数据库编程:JDBC3. JDBC 访问数据库的层次结构4. MySQL 数据库操作介绍5. MySQL 驱动包的下载及添加到项目6....
    99+
    2024-04-02
  • Java编程 JDBC连接Oracle数据库
    Part1 JDBC         JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口...
    99+
    2023-09-27
    数据库 java oracle
  • 详解Java使用JDBC连接MySQL数据库
    一:什么是数据库,为什么要有数据库? 数据,数据库,数据库管理系统和数据库系统是与数据库技术密切相关的四个基本概念。 数据库相信大家都耳熟能详了,其实数据库顾名思义就是存放数据的仓库...
    99+
    2024-04-02
  • jdbc怎么连接mysql数据库
    要连接MySQL数据库,需要以下步骤:1. 加载MySQL的JDBC驱动程序。可以从MySQL官方网站下载并安装MySQL Conn...
    99+
    2023-08-19
    jdbc mysql数据库
  • Java数据库连接(JDBC)
    JDBC(Java DataBase Connectivity) JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套API全称:( Java DataBase Connectivi...
    99+
    2023-09-22
    数据库 java mysql
  • JDBC---Java连接数据库
    第一章 JDBC概述 1.1 JDBC概述 jdbc是(Java Database Connectivity)单词的缩写,翻译为java连接数据库。是Java程序连接数据库的技术总称。 JDBC由两个...
    99+
    2023-10-20
    java 数据库 mysql
  • jdbc怎么连接本地mysql数据库
    要连接本地MySQL数据库,需要先确保MySQL数据库已经在本地安装并运行,然后按照以下步骤进行连接: 1、下载并安装MySQL J...
    99+
    2024-04-18
    jdbc mysql
  • Java连接mysql数据库
    文章目录 一、Java连接mysql数据库1.1 流程1.2 一个测试连接的java程序 二、优化:创建一个工具类2.1 存在的问题2.2 创建配置文件和工具类2.3 测试使用工具类进行CRUD操作 三、SQL注入问题3.1...
    99+
    2023-08-16
    数据库 mysql java jdbc sql注入
  • Java基础MAC系统下IDEA连接MYSQL数据库JDBC过程
    JDBC数据库连接 MySQL中建表 在终端使用命令mysql -u root -p打开数据库,在数据库操作环境下进行创建数据库,建表等等操作 建立数据库语句 create da...
    99+
    2024-04-02
  • 基于JDBC的MySQL数据库编程
    ✨博客主页: 荣 ✨系列专栏: MySQL ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录 一. JDBC概述二. JDBC前置工作1. 准备好MySQL驱动包2. 创建项目 三....
    99+
    2023-09-12
    数据库 mysql java
  • MySQL | JDBC连接数据库详细教程【全程干货】
    文章目录 一、什么是JDBC?二、JDBC工作原理三、使用JDBC连接MySQL数据库【✔】1、安装对应数据驱动包2、将jar包导入项目中3、编写代码连接数据库【⭐】1️⃣ 创建数据源2️⃣ 和数据库建立网络连接3️⃣ 构造SQL...
    99+
    2023-08-20
    数据库 mysql java
  • MySQL数据库JDBC编程详解流程
    目录一、数据库编程的必备条件二、Java的数据库编程:JDBC三、JDBC工作原理四、JDBC开发步骤五、JDBC操作步骤六、优化JDBC的部分代码1.获取数据库连接对象2.操作命令...
    99+
    2024-04-02
  • jdbc连接mysql数据库要注意什么
    确保已经安装了JDBC驱动程序:在使用JDBC连接MySQL数据库之前,需要先下载并安装MySQL的JDBC驱动程序,例如MyS...
    99+
    2024-04-12
    mysql jdbc
  • Java使用JDBC连接数据库
    目录一、JDBC简介二、JDBC中常用类和接口1、驱动程序管理类(DriverManager)2、声明类(Statement)3、数据库连接类 (Connection)4、结果集合类...
    99+
    2024-04-02
  • java基于jdbc连接mysql数据库功能实例详解
    本文实例讲述了java基于jdbc连接mysql数据库的方法。分享给大家供大家参考,具体如下:一、JDBC简介Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何...
    99+
    2023-05-30
    java jdbc mysql
  • JDBC 连接数据库
    一、通过Driver接口直接连接 public Connection getConnectionByDriver() throws Exception{  ...
    99+
    2024-04-02
  • JDBC连接数据库----Mysql七大步骤详解
    一、jdbc的概念         1、什么是jdbc?         JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它...
    99+
    2023-09-05
    mysql 数据库 java
  • jdbc连接mysql数据库超时怎么解决
    1、增加连接超时时间:在创建数据库连接时,可以设置连接超时时间,例如设置为10秒。可以使用以下代码实现: Properties pr...
    99+
    2024-04-08
    mysql jdbc
  • JDBC 连接 MySQL
    哈喽~大家好,这次我们来看看 JDBC 如何 连接 MySQL. 目录 一、开头 二、介绍 1、JDBC 的概念 2、JDBC 的功能 3、JDBC 的常用接口和类 三、数据库的创建(MySQL) 1、连接 MySQL  (1)、...
    99+
    2023-08-31
    java intellij-idea 前端 mysql sql
  • java中jdbc怎么连接数据库
    在Java中使用JDBC连接数据库的步骤如下:1. 下载并安装数据库驱动程序:首先需要从数据库官方网站下载相应的JDBC驱动程序,并...
    99+
    2023-09-15
    java jdbc 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作