JDBC注册驱动及获取连接

news2025/2/22 19:06:29

文章目录

  • 1. JDBC注册驱动
    • 1.1 导入驱动 Jar 包
    • 1.2 注册驱动
      • 1.2.1 API介绍
      • 1.2.2 使用步骤
      • 1.2.3 案例代码
  • 2. 获取连接
    • 2.1 API介绍
    • 2.2 参数说明
    • 2.3 注意事项
    • 2.4 使用步骤
    • 3.5 案例代码

在这里插入图片描述


1. JDBC注册驱动

Connection表示Java程序与数据库之间的连接,只有拿到Connection才能操作数

1.1 导入驱动 Jar 包

导入连接 MySQL 所需要的jar包.

1.2 注册驱动

我们Java程序需要通过数据库驱动才能连接到数据库,因此需要注册驱动。
MySQL的驱动的入口类是:com.mysql.jdbc.Driver

1.2.1 API介绍

java.sql.DriverManager 类用于注册驱动。提供如下方法注册驱动

static void registerDriver(Driver driver)DriverManager 注册给定驱动程序。 

说明:

​ 1)执行完上述语句之后,DriverManager 就可以管理 mysql 驱动了。

​ 2)当前的 DriverManager.registerDriver(Driver driver); 方法的参数是 Driver,这是 jdbc 的一个接口,所以我们需要给定实现该接口的实现类。如果我们连接的是 mysql 数据库,那么需要导入 mysql 数据库提供的包,也就是com.mysql.jdbc.Driver; 下的Driver类。如果我们连接的是oracle数据库,那么需要导入oracle数据库提供的包。

1.2.2 使用步骤

1.DriverManager.registerDriver(驱动对象); 传入对应参数即可

1.2.3 案例代码

public class Demo01 {
	public static void main(String[] args) throws Exception {
		// 注册驱动
		DriverManager.registerDriver(new com.mysql.jdbc.Driver());
	}
}

说明:这里的new Driver()的类Driver就是来自mysql数据库。

通过查询 com.mysql.jdbc.Driver 源码,我们发现Driver类“主动”将自己进行注册

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    static {
        try {
            // 自己自动注册
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can't register driver!");
        }
    }
    public Driver() throws SQLException {
    }
}

注意:使用DriverManager.registerDriver(new com.mysql.jdbc.Driver());,存在以下方面不足: 驱动被注册两次

使用Class.forName("com.mysql.jdbc.Driver");加载驱动,这样驱动只会注册一次


2. 获取连接

2.1 API介绍

java.sql.DriverManager类中有如下方法获取数据库连接

//	连接到给定数据库 URL ,并返回连接。 
static Connection getConnection(String url, String user, String password) 

2.2 参数说明

  1. String url:连接数据库的URL,用于说明连接数据库的位置
  2. String user:数据库的账号
  3. String password:数据库的密码

连接数据库的URL地址格式:协议名:子协议://服务器名或IP地址:端口号/数据库名?参数=参数值

在这里插入图片描述

MySQL写法:jdbc:mysql://localhost:3306/day04_db

如果是本地服务器,端口号是默认的3306,则可以简写:jdbc:mysql:///day04_db

2.3 注意事项

如果数据出现乱码需要加上参数: ?useUnicode=true&characterEncoding=utf8,表示让数据库以UTF8编码来处理数据。
如: jdbc:mysql://localhost:3306/day04_db?useUnicode=true&characterEncoding=utf8

2.4 使用步骤

DriverManager.getConnection(url, user, password); 传入对应参数即可

3.5 案例代码

public class Demo01 {
	public static void main(String[] args) throws Exception {
		Class.forName("com.mysql.jdbc.Driver");
         /*
            1)使用DriverManager类中的静态方法获取和数据库的连接:
                static Connection getConnection(String url, String user, String password)
                    参数:
                        url:表示建立和数据库服务器连接的地址,书写格式几乎是固定的。
                            jdbc:mysql://连接mysql服务器的ip地址:mysql服务器的端口号/连接的数据库名
                            补充:如果连接的数据库软件在本地,那么url可以简写为:jdbc:mysql:///连接的数据库名
                        user:连接mysql服务器的用户名,这里暂时书写root
                        password:接mysql服务器的密码
                    返回值:Connection,属于java.sql 包下的一个接口,表示连接接口,和数据库的连接。

         */
		// 连接到MySQL
		// url: 连接数据库的URL
		// user: 数据库的账号
		// password: 数据库的密码
		Connection conn = DriverManager.getConnection(url, "root", "1234");
		System.out.println(conn);
	}
}




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP/IP网络模型分层

应用层 应用层是最上层的,也就是我们能直接接触到的就是应用层(Application Layer),手机和电脑上的应用软件都是在应用层实现。当两个不同设备的应用需要通信的时候,应用就会把数据传输给下一层,也就是传输层 所以,应用层只需要…

PMP--一模--解题--91-100

文章目录 13.干系人管理91、 [单选] 在项目执行期间,一名外部干系人反对一项重大范围变更。除非重新评估干系人的决定,否则项目进展将受到影响。项目经理下一步该怎么做? 5.范围管理92、 [单选] 一客户给你一复杂项目的采购工作说明书&#x…

「数组」堆排序 / 大根堆优化(C++)

目录 概述 核心概念:堆 堆结构 数组存堆 思路 算法过程 up() down() Code 优化方案 大根堆优化 Code(pro) 复杂度 总结 概述 在「数组」快速排序 / 随机值优化|小区间插入优化(C)中,我们介绍了三种基本排序中的冒泡…

数学学习记录

9月14日 1.映射: 2.函数: 9月15日 3.反函数: 4.收敛数列的性质 5.反三角函数: 9月16日 6.函数的极限: 7.无穷小和无穷大 极限运算法则:

MySQL_简介及安装、配置、卸载(超详细)

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

小麦病害检测数据集【‘细菌叶斑病‘, ‘褐斑病‘, ‘叶瘤病‘】

小麦病害检测数据集】nc3 标签names:[Bacteria Leaf Blight,Brown Spot, Leaf smut] 名称:【细菌叶斑病, 褐斑病, 叶瘤病】共6715张,8:1:1比例划分,(train;5372张,val:671张,test:67…

【AI视频】复刻抖音爆款AI数字人作品初体验

博客主页: [小ᶻZ࿆] 本文专栏: AI视频 | AI数字人 文章目录 💯前言💯抖音上的爆火AI数字人视频💯注册HeyGen账号💯复刻抖音爆款AI数字人💯最终生成效果💯小结 对比原视频效果:…

JVM面试真题总结(十一)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 解释双亲委派模型及其优势 双亲委派模型是Java类加载器的一个重要…

Qt:静态局部变量实现单例(附带单例使用和内存管理)

前言 本文主要写静态局部变量实现的单例以及单例的释放,网上很多教程只有单例的创建,但是并没有告诉我们单例的内存管理,这就很头疼。静态局部变量实现的单例应该是最简单的单例,而且不需要内存管理。 正文 静态局部变量单例&a…

微服务实战系列之玩转Docker(十五)

前言 博主的玩转Docker系列,今天正式开启第十五篇的征程! 在过去的十四篇中,涉及的内容有知识、有原理、有工具、更有实践。当你打开每一篇文章时,均会获得一个特定主题的知识和技巧,助你在云原生的世界里&#xff0c…

C++实现unordered_map和unordered_set

1. 结构示意 2. 模版参数控制 我们知道,unordered_set和unordered_map与set和map是一样的,前者不是真正的键值对,它的value值和key值相同;后者是真正的键值对。STL非常注重代码的复用,它们在底层使用了同一棵红黑树模…

floodfill算法(一)

目录 一、图像渲染 1. 题目链接:733. 图像渲染 2. 题目描述: 3. 解法 🌴算法思路: 🌴算法代码: 二、岛屿数量 1. 题目链接:200. 岛屿数量 2. 题目描述: 3. 解法 &#x1f…

FinLex An effective use of word embeddings for financial lexicon generation

FinLex: An effective use of word embeddings for financial lexicon generation 论文阅读 文章目录 FinLex: An effective use of word embeddings for financial lexicon generation 论文阅读 AbstractMethodology具体词表例子LM 词列表与 FinLex 词列表 词列表在分类任务中…

网络安全学习(二)Netdiscover

Netdiscover是一款网络扫描工具(kali中有这个工具),它可以扫描本地网络主机,它借助ARP协议实施主机发现,长这个样子。 点击打开,进入命令行。 首先查看本机的IP地址,命令为ifconfig&#xff0c…

TAG:BladeLLM 的纯异步推理架构

作者:张子鹏 PAI引擎团队 随着 GQA/MLA/MoE 等模型结构不断发展,大语言模型的推理逐步解除了显存限制,逐渐向着高并发、高吞吐的方向发展。推理引擎的运行时开销也变得不可忽视。主流 LLM 推理框架的运行时开销大致来自: Python …

【MySQL学习】基础指令全解:构建你的数据库技能

📃个人主页:island1314 🔥个人专栏:MySQL学习 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 引言 下面的操作都是在windows 的…

AT89C51 Intel HEX手工结构分析 反汇编工具

在不查询格式情况下分析确定 Intel HEX 格式 Hex文件内容 :0300000002090BE7 :0C090B00787FE4F6D8FD7581080208F63C :01091700419E :1008F60078087C007D007BFF7A0979177E007F01EE :050906001208D080FE84 :10080000E709F608DFFA8046E709F208DFFA803EDA :1008100088828C83E709F0…

C++基础面试题 | C++中的构造函数可以是虚函数吗? C++中的析构函数一定要是虚函数吗?

文章目录 问题一:在C中,构造函数不能是虚函数。问题二:析构函数不一定需要声明为虚函数,但在多态环境下,建议一定将其声明为虚函数。示例虚函数总结 问题一:在C中,构造函数不能是虚函数。 这是…

PMP--一模--解题--81-90

文章目录 4.整合管理81、 [单选] 一位先前不活跃的干系人参与程度突然增加,这种意外的参与导致了一些变更请求。项目经理应该做什么? 4.整合管理82、 [单选] 公司的新产品系列将在两个月内发布,95%的项目任务均已完成。但是,管理层…

二分算法——优选算法

个人主页:敲上瘾-CSDN博客 个人专栏:游戏、数据结构、c语言基础、c学习、算法 本章我们来学习的是二分查找算法,二分算法的应用非常广泛,不仅限于数组查找,还可以用于解决各种搜索问题、查找极值问题等。在数据结构和算…