news 2026/7/9 11:10:21

Java:JDBC连接完整通俗易懂指南(图文表格版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java:JDBC连接完整通俗易懂指南(图文表格版)

JDBC 链接,简单来说,就是Java 程序连接数据库的“地址”和“通道”

它的全称是Java Database Connectivity (Java数据库连接),是一套让 Java 代码能和不同数据库(如 MySQL、Oracle、PostgreSQL 等)对话的标准 API(应用程序编程接口),由 SUN 公司制定规范,各大数据库厂商实现底层驱动。

通俗类比:JDBC 相当于数据库通行证+通讯管道,连接字符串就是通行证密码,告诉Java程序:数据库在哪、走什么通讯规则、账号密码、附加校验规则。


1. JDBC连接核心结构(拆解+通俗注解)

以MySQL8.x标准连接地址为例:

jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8

拆分完整组成,补齐原有文档缺失的驱动协议细分规则,全部表格化:

组成部分

细分规则+含义

标准示例值

必填与否

顶层协议

固定前缀jdbc:,代表启用JDBC通讯规范,所有数据库必须保留,不可修改

jdbc:

必填

数据库子协议

区分数据库类型,驱动识别标识,mysql/oracle/postgresql各不相同

mysql://

必填

主机Host

数据库服务器IP,localhost仅代表本机;线上必须填写外网/内网IP

localhost、127.0.0.1、192.168.3.105

必填

端口Port

数据库监听端口,每个数据库默认端口固定,不可随意修改

3306(MySQL)、1521(Oracle)

必填

业务库名

连接目标业务数据库,不是MySQL服务本身,必须提前手动创建

mydb、user_db、order_db

必填

扩展连接参数

配置编码、时区、加密、超时、认证规则,多个参数使用&分隔

?serverTimezone=Asia/Shanghai

可选(生产必加)

2. 主流数据库完整对照表(补齐驱动类+maven依赖,生产可用)

原有文档缺失驱动类、适配版本、特殊语法,整合为最全对照表,区分老旧版本与新版本,规避报错:

数据库类型

JDBC连接地址

完整驱动类

默认端口

适配场景

MySQL8.x

jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

com.mysql.cj.jdbc.Driver(新版)

3306

主流生产环境、SpringBoot2.x/3.x

MySQL5.x

jdbc:mysql://localhost:3306/mydb?useSSL=false&characterEncoding=utf-8

com.mysql.jdbc.Driver(旧版,已废弃)

3306

老旧遗留项目

Oracle

jdbc:oracle:thin:@localhost:1521:xe

oracle.jdbc.OracleDriver

1521

金融、国企老旧项目

PostgreSQL

jdbc:postgresql://localhost:5432/mydb

org.postgresql.Driver

5432

云原生、大数据项目

SQL Server

jdbc:sqlserver://localhost:1433;databaseName=mydb

com.microsoft.sqlserver.jdbc.SQLServerDriver

1433

传统Windows业务系统

SQLite

jdbc:sqlite:D:/db/mydb.db

org.sqlite.JDBC

无端口

本地轻量化单机项目

避坑关键点:MySQL8.x 禁止使用旧驱动com.mysql.jdbc.Driver,会直接启动告警、连接失败;必须带时区参数!

3. JDBC原生代码优化版(修复旧代码缺陷)

3.1 原有代码存在问题

  • 强行编写Class.forName加载驱动,JDBC4.0+完全冗余

  • 未处理SQL异常、资源关闭不严谨

  • 时区参数错误,线上时间错乱

3.2 生产级精简代码

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JdbcProdExample { public static void main(String[] args) { // 1. 生产标准链接地址 String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowPublicKeyRetrieval=true"; String username = "root"; String password = "root123456"; // 2. JDBC4.0自动加载驱动,无需手动Class.forName // 3. try-with-resources自动关闭连接,杜绝连接泄露(核心优化点) try (Connection conn = DriverManager.getConnection(url, username, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT name,id FROM users")) { // 遍历查询结果 while (rs.next()) { System.out.println("用户ID:"+rs.getInt("id")+" 用户名:" + rs.getString("name")); } } catch (Exception e) { // 生产环境禁止直接打印堆栈,需要日志输出 e.printStackTrace(); } } }

4. SpringBoot全场景配置(补充多环境+废弃参数说明)

4.1 application.properties 标准生产配置

# 数据库连接地址 spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowPublicKeyRetrieval=true # 账号密码 spring.datasource.username=root spring.datasource.password=root123456 # MySQL8固定驱动类,禁止简写 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 开启打印sql日志(调试专用) logging.level.com.zaxxer.hikari=DEBUG

4.2 application.yml 标准生产配置

spring: datasource: url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8 username: root password: root123456 driver-class-name: com.mysql.cj.jdbc.Driver

4.3 废弃参数补充(高频踩坑)

废弃参数

问题

替代方案

useLegacyDatetimeCode

MySQL8彻底废弃,引发时间报错

直接删除,使用serverTimezone统一时区

driverClassName=com.mysql.jdbc.Driver

过期驱动,SpringBoot3直接启动失败

替换为com.mysql.cj.jdbc.Driver

5. MySQL连接参数完整版(分类表格,区分开发/生产)

扩充原有参数,拆分必填参数、优化参数、故障修复参数,适配线上生产:

参数名称

详细作用

适用环境

serverTimezone=Asia/Shanghai

指定东八区时区,解决相差8小时、时间回显错误,生产必填

MySQL8全局

useSSL=false

关闭SSL加密连接,本地开发关闭;外网公网必须开启true

本地开发关闭,线上生产开启

characterEncoding=utf-8

统一通讯编码,解决新增、查询中文乱码

全环境必填

allowPublicKeyRetrieval=true

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 11:10:11

采购管理系统选型指南:2026年7款主流方案横向对比

核心要点 选型先看采购复杂度和企业规模,再看 AI 能力是否嵌入业务流程 大型集团看泛微京桥通、用友 BIP、SAP Ariba;中型看金蝶采购云、京东慧采;AI 优先 中小微看快鹭、简道云 2026 年分水岭:AI 比价、自动对账、供应商智能考核…

作者头像 李华
网站建设 2026/7/9 11:10:09

QMC音频解密工具:释放你被锁定的音乐文件

QMC音频解密工具:释放你被锁定的音乐文件 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经在QQ音乐平台购买了数字专辑,却发现下载的文件无…

作者头像 李华
网站建设 2026/7/9 11:07:26

秋分插画没思路?6 个宝藏站点,快速提速创作

每到秋分筹备插画创作,很容易陷入素材匮乏、画面缺少新意的困境,反复构思也很难搭建完整画面,大量时间消耗在寻找适配元素上。整理 6 个实用站点,覆盖国风秋景、自然风物、多元手绘风格,不用反复拼凑元素,快…

作者头像 李华
网站建设 2026/7/9 11:03:49

深度解析RePKG:Wallpaper Engine资源解包与纹理转换技术实战

深度解析RePKG:Wallpaper Engine资源解包与纹理转换技术实战 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一个专为Wallpaper Engine设计的C#工具库&#xff0…

作者头像 李华
网站建设 2026/7/9 10:59:47

MT4 科普:一次客户端请求的网络通信流程

在使用 MT4 这类客户端软件时,用户在界面上执行一次操作,背后通常会触发一次客户端与服务器之间的网络通信。这个过程可以从软件工程角度理解为一次请求与响应。 以常见的终端操作为例,mt4-go.com客户端会先在本地生成请求数据,并…

作者头像 李华
网站建设 2026/7/9 10:59:07

STM32 位带操作——像 51 一样操作 GPIO

问题STM32 的 GPIO 操作通常写 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET),很长。如果想像 51 那样 P0_0 1 一样简洁,怎么办?原理Cortex-M3/M4 支持位带操作(Bit-Banding)——将 1 bit 的地址映射到 1 个 3…

作者头像 李华