【MySQL】JDBC编程

article/2025/8/24 3:20:47

目录

1、什么是JDBC?

2、导入 jar 包

3、JDBC 的使用

4、总结


1、什么是JDBC?

实际开发中,SQL 是很少手动输入的,绝大多数的 SQL 都是通过代码,自动执行的,这个时候就需要让其他编程语言来操作数据库了。

而 MySQL 是一个客户端/服务器架构的语言,根据 MySQL 提供的 API 写个数据库客户端是非常容易的。

比如 Oracle,SQLServer,SQLite 等数据库都有 API。

但是不同的数据库所提供的 API 是不一样的,他们的开发团队各不相同,所以 API 那么多,对于程序猿的学习成本就越高,于是在 Java 的圈子里,就把这些 API 统一编程一套,指定成标准!就称为 JDBC。

目前 JDBC 这套 API 已经成了 Java 标准库的一部分,由于 Java 的影响力还是很大的,以自身作为标准,各种数据库厂商,都提供了能够适应 JDBC 相关的驱动包!

所以我们只需要掌握了 JDBC 这套 API,无论操作哪个数据库,操作的代码都是不变,基本相同的。

即 JDBC 最主要的就是屏蔽了不同数据库原生 API 之间的差异,而是使用 JDBC 这一套 API 接口来规范了所有数据库的编程操作。


2、导入 jar 包

在使用 JDBC 之前,需要先安装对应数据库的驱动包,比如博主用的是 MySQL 5.7,那么下载对应的驱动包就是 mysql-connector-java-5.1.47.jar,这个驱动包可以到博主主页去获取!也可也去 Oracle 官网去下载哦!

下载好对应的驱动包后,我们就把 jar 包导入到项目中:

首先创建一个存放 jar 包的目录, 随后把这个 jar 包拷贝进来:

接着右键新建的目录(包含 jar 包),选中对应的 Add as Libray... 将目录创建成依赖目录,直接单击 OK,此时 IDEA 就能解析出 jar 包里包含的内容了!


3、JDBC 的使用

JDBC 这里的 api 看起来蛮多的,但实际上都非常简单,都是固定套路!

● 描述数据库的位置和用户密码

// 创建数据源
DataSource dataSource = new MysqlDataSource();
// 描述了数据库服务器所在位置, 当前固定写法
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root"); // 设置登录账户名
((MysqlDataSource)dataSource).setPassword("211016"); // 设置登录密码

这样一段代码,就设置好了数据库服务器所在的地址,要操作的数据库用户和用户密码.

至于 setUrl 这里面的字符串含义,我们下面也来一一解析下:

  • "jdbc:mysql" :这个 url 是给 jdbc 中的 mysql 来使用的
  • "127.0.0.1" :服务器所在的 IP 地址,此处的 IP 是环回IP,表示主机自己
  • "3306" : 这个是端口号,mysql 安装时候配置的,默认是 3306
  • "demo" :要访问的数据库名
  • "characterEncoding" :描述了请求的字符编码方式,一般情况下都是 utf8
  • "useSSL = false" :关闭加密功能,这里不做展开介绍

上述的内容,在后续讲述网络知识的时候,还会见到,这里只是简单的了解即可。

JDBC 支持两种风格的代码,一种是 DataSource,一种是 DriverManager.

  • DataSource 相比于 DriverManager 内置了数据库连接池,可以重复利用连接(比如:线程池,字符串常量池....)
  • DriverManager 使用的时候,需要借助反射,数据不常规的编程手段,博主文章中采用的是 DataSource!

● 与数据库建立连接

上述的操作,只是描述了数据库服务器在哪里,并没有真正建立起连接来,下面我们进行连接操作,才是真正开始通过网络去与数据库服务器进行通信!

// 令当前客户端与描述的数据库服务器建立连接, 会抛出 SQLException 异常
Connection connection = dataSource.getConnection();

● 构造 sql 语句

String sql = "select id, name, sex from student";
PreparedStatement statement = connection.prepareStatement(sql);

通过 connection.prepareStatement 方法构造出一个对象,PreparedStatement 类型的,其实这个对象背后做了很多事情,比如会对 sql 语句进行一些预处理....

上述的写法是直接写死了,如果是查询操作还好,那如果是要执行新增操作呢?也是直接写死吗?

String sql = "insert into student values(4, '小丽', '女')";

更多的时候,插入的数据的动态的,那要怎么写呢?可以使用 PerparedStatement 来通过占位符替换的方式,从而实现动态 sql 的构造:

String sql = "insert into student values(?, ?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id);
statement.setString(2, name);
statement.setString(3, sex);

这里每个 ? 的位置是通过1开始计算的,setInt(1, 4),就是将第一个 ? 位置的数据插入成 4,后面的以此类推。  

构造出指定的 sql 语句后,就可以通过 statement 这个引用来执行了

● 执行 sql 语句

ResultSet result = statement.executeQuery(); // 查询操作
// int ret = statement.executeUpdate(); -> 新增, 修改, 删除操作

excuteQuery 执行后,会返回一个结果集,如果是 executeUpdate 则返回这个操作影响到几行。

● 处理结果集

while (result.next()) {int id = result.getInt("id");String name = result.getString("name");String sex = result.getString("sex");System.out.printf("student : id = %d, name = %s, sex = %s\n", id, name, sex);
}

● 断开连接

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

JDBC 使用步骤总结:

  1. 创建数据源并连接
  2. 创建 sql 语句
  3. 使用操作命令来执行 sql
  4. 处理结果
  5. 释放资源

JDBC 在实际工作中,可能并不会直接使用,上述的代码大家也能看到,写起来还是比较麻烦的,因此就有了一些库和框架,针对 JDBC 进行了进一步的封装,让我们使用起来更方便,比如后续会学习到的 Mybatis 这种... 


4、总结

其实 JDBC 并不难,就是几个固定的套路,如果要是应付考试,还是需要自己多建几个表利用 JDBC 使用一些复杂查询,多练习练习,如果是工作中,用 JDBC 就不多了,会使用更方便的框架,如果你是一个很有自己想法的同学,可以基于 JDBC 进行修改,搭建一套属于自己的框架出来...


MySQL 数据库基础(完) ❀


http://chatgpt.dhexx.cn/article/OFigwptx.shtml

相关文章

MySQL JDBC编程

✏️作者:银河罐头 📋系列专栏:MySQL 🌲“种一棵树最好的时间是十年前,其次是现在” 文章目录 前置知识API JDBC的使用安装数据库代码插入操作查找操作 前置知识 API API(Application Program Interface)被定义为应用…

JDBC编程

目录 什么是 JDBC? JDBC 架构 常见的 JDBC 组件 分析Java连接MySQL的五种方式 方式一:将用户名和密码封装在Properties类中 方式二:在方式一的基础上,利用反射实现驱动 方式三:使用DriverManger替代driver进行统…

java——jdbc编程

文章目录 JDBC的概念JDBC的常用APIJDBC示例代码PreparedStatementCallableStatement JDBC(Java Database Connectivity)是Java的一种数据库访问标准,它提供了一套API,使得我们可以通过Java程序来访问和操作各种关系型数据库。 下面…

JDBC是什么

JDBC介绍 JDBC( Java DataBase Connectivity ) 称为 Java数据库连接 ,它是一种用于数据库访问的应用程序 API ,由一组用Java语言编写的类和接口组成,有了JDBC就可以 用统一的语法对多种关系数据库进行访问,而不用担心其数据库操作…

如何使用JDBC操作数据库?一文带你吃透JDBC规范

文章目录 1. 前言2. JDBC 概述2.1 概念2.2 优点 3. JDBC 快速入门4. JDBC API详解4.1 DriverManager4.1.1 注册驱动4.1.2 获取连接 4.2 Connection4.2.1 获取执行sql的对象4.2.2 事务管理 4.3 Statement4.4 ResultSet4.5 PreparedStatement4.5.1 sql注入问题4.5.2 preparedStat…

JDBC详解

1.JDBC是什么? Java DataBase Connectivity(Java语言连接数据库) 2.JDBC的本质是什么? JDBC是SUN公司制定的一套接口(interface) java.sql.*;(这个软件包下有很多接口) 接口都有…

JDBC简介

文章目录 一、JDBC简介二、JDBC执行步骤三、执行步骤中类的简介1、DriverManager类2.Connection类3、ResultSet类 一、JDBC简介 1.什么是jdbc JDBC全称:java database connectivity,简称jdbc, 翻译就是 Java 数据库连接。 2.jdbc有什么作用…

JDBC详细介绍

jdbc的概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。 2.jdbc的作用 JDBC为Java程序操作不同的数据库提…

JDBC详细全解(示例超多)

文章目录 JDBCJDBC的概念1.jdbc的概念2.jdbc的本质 JDBC快速入门JDBC功能详解1、DriverManager驱动管理对象2、Connection数据库连接对象3、Statement执行sql语句的对象4、ResultSet结果集对象 JDBC案例案例需求数据准备1、数据库数据准备2、创建student类 功能实现1、查询所有…

JDBC介绍

1 JDBC简介 概念:JDBC(Java DataBase Connectivity) :Java数据库连接技术:具体讲就是通过Java连接广泛的数据库,并对表中数据执行增、删、改、查等操作的技术。如图所示: 此前我们学习过SQL后,可以通过 Na…

JDBC 连接 MySQL

哈喽~大家好,这次我们来看看 JDBC 如何 连接 MySQL. 目录 一、开头 二、介绍 1、JDBC 的概念 2、JDBC 的功能 3、JDBC 的常用接口和类 三、数据库的创建(MySQL) 1、连接 MySQL (1)、注册驱动 (2)、获取连接 (3)、获取执行者连接 …

BindingNavigator 类 - MSDN

.NET Framework 2.0 其他版本 5(共 9)对本文的评价是有帮助 - 评价此主题 注意:此类在 .NET Framework 2.0 版中是新增的。 表示窗体上绑定到数据的控件的导航和操作用户界面 (UI)。 命名空间:System.Windows.Forms 程序集:System.Windows.Fo…

Android的一个BindView工具的实现

对于Android已经有很多Bind View的工具了,大多都是使用了反射和注解的方法。那么如何实现一个简易的代码生成工具呢?其实不难,只要会写代码都可以试试。这些天,我试了一下,并将它做成了工具。代码如下: pa…

setNavigationBarTitle

wx.setNavigationBarTitle就是用来改红框框里面的内容滴 在项目开发中经常用到 使用的场景就包括了多个地方用同一套页面的时候 wx.setNavigationBarTitle({title: "我的店铺",});

安卓ViewBinding详解

背景 之前我们通过Kotlin Android Extensions来访问布局文件中的元素,但是这个现在被废弃了,原因如下: 空安全:res下的任何id都可以被访问,有可能因访问了非当前Layout下的id而出错兼容性:只能在kotlin中…

Winform中用bindingNavigator和bingdingSource实现分页

BindingNavigator控件介绍 可以使用BindingNavigator控件来创建标准化的方法,以便用户搜索和更改 Windows 窗体上的数据。BindingNavigator 控件由包含一系列 ToolStripItem 对象的ToolStrip组成,可以实现:添加数据,删除数据&…

DataGridView使用bindingNavigator实现分页功能(应用存储过程)

想法是这样的:使用bindingNavigator存储过程实现DataGridView的分页功能,其中包含简单的查询。 存储过程如下: --创建分页查询存储过程(含输出参数,输入参数(含搜索功能)) use HotelDB if exists(select *…

配置bind

安装bind yum install bind-* service firewalld stop #暂时关闭防火墙 vim /etc/named.conf Linsten-on port 53 {any;}; 监听除了自己以外的ip Allow-query{any;} 允许任意的ip来访问 配置正向解析 /etc/named.rfc1912.zones #直接在底部添加 zone "s…

Android dataBinding和viewBinding的混淆配置

在最近重构过的项目中有使用dataBinding或viewBinding,在调试的时候没有问题,但是在混淆过后出现了崩溃: 我们知道viewbinding的初始化是ActivityMainBinding.inflate() 而我是通过反射去初始化viewbinding的 很明显,布局所生成的…

viewBinding和@BindView的用法的简单使用

viewBinding 1.module下的build.gradle,在闭包android{ }里面添加 viewBinding {enabled true} 2.使用方法 用视图绑定功能后,系统会为该模块中包含的每个 XML 布局文件生成一个绑定类。这个类的类名是以xml布局文件名去掉下换线后,单词…