二、获取数据库连接

2023-11-17

一、Driver 接口

  • java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提
    供给数据库厂商使用的,不同数据库厂商提供不同的实现
  • 在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理
    器类(java.sql.DriverManager)去调用这些Driver实现
    Oracle的驱动:oracle.jdbc.driver.OracleDriver
    mySql的驱动: com.mysql.jdbc.Driver

二、加载与注册 JDBC 驱动

  • 方式一:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传
    递要加载的 JDBC 驱动的类名
    Class.forName(“com.mysql.jdbc.Driver”);

  • 方式二:DriverManager 类是驱动程序管理器类,负责管理驱动程序
    DriverManager.registerDriver(com.mysql.jdbc.Driver);

    通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实
    例,因为 Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中,会
    调用 DriverManager.registerDriver() 方法来注册自身的一个实例

三、建立连接(Connection)

  • 可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接

  • JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。

  • JDBC URL的标准由三部分组成,各部分间用冒号分隔。
    jdbc:子协议:子名称
    协议:JDBC URL中的协议总是jdbc
    子协议:子协议用于标识一个数据库驱动程序
    子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号数据库名
    在这里插入图片描述

四、几种常用数据库的JDBC URL

  • 对于 Oracle 数据库连接,采用如下形式:
    ->jdbc:oracle:thin:@localhost:1521:atguigu

  • 对于 SQLServer 数据库连接,采用如下形式:
    ->jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=sid

  • 对于 MYSQL 数据库连接,采用如下形式:
    ->jdbc:mysql://localhost:3306/atguigu

五、连接方式

方式一:

public void testConnection1() throws SQLException {
		// 获取Driver实现类对象
		Driver driver = new com.mysql.jdbc.Driver();

		// jdbc:mysql:协议
		// localhost:ip地址
		// 3306:默认mysql的端口号
		// test:test数据库
		String url = "jdbc:mysql://localhost:3306/test";
		// 将用户名和密码封装在Properties中
		Properties info = new Properties();
		info.setProperty("user", "root");
		info.setProperty("password", "root");
		Connection conn = driver.connect(url, info);
		System.out.println(conn);
	}

方式二:对方式一的迭代

public void testConnection2() throws Exception {
		// 1.获取Driver实现类对象:使用反射
		Class clazz = Class.forName("com.mysql.jdbc.Driver");
		Driver driver = (Driver) clazz.newInstance();

		// 2.需要连接的数据库
		String url = "jdbc:mysql://localhost:3306/test";

		// 3.提供连接需要的用户名和密码
		Properties info = new Properties();
		info.setProperty("user", "root");
		info.setProperty("password", "root");

		// 获取连接
		Connection conn = driver.connect(url, info);
		System.out.println(conn);
	}

方式三:使用DriverManager替换Driver

public void testConnection3() throws Exception {
		// 1.获取Driver实现类对象
		Class clazz = Class.forName("com.mysql.jdbc.Driver");
		Driver driver = (Driver) clazz.newInstance();

		// 2.提供另外三个连接的基本信息
		String url = "jdbc:mysql://localhost:3306/test";
		String user = "root";
		String password = "root";
		// 注册驱动
		DriverManager.registerDriver(driver);

		// 获取连接
		Connection conn = DriverManager.getConnection(url, user, password);
		System.out.println(conn);
	}

方式四 :可以只是加载驱动,不用显示注册的驱动了

public void testConnection4() throws Exception {
		// 1.提供另外三个连接的基本信息
		String url = "jdbc:mysql://localhost:3306/test";
		String user = "root";
		String password = "root";

		// 2.加载Driver(mysql可以省略)
		Class.forName("com.mysql.jdbc.Driver");
		// 相较于方式三,可以省略如下操作
		// Driver driver = (Driver) clazz.newInstance();
		// // 注册驱动
		// DriverManager.registerDriver(driver);

		// 3.获取连接
		Connection conn = DriverManager.getConnection(url, user, password);
		System.out.println(conn);
	}

方式五:将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接

	/*
	 * 此种方式的好处 
	 * 1.实现了数据与代码的分离,实现了解耦。 
	 * 2.如果需要修改配置文件信息,可以避免程序重新打包。
	 */
	public void testConnection5() throws Exception {
		// 1.读取配置文件的4个基本信息
		InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
		
		Properties pros = new Properties();
		pros.load(is);

		String user = pros.getProperty("user");
		String password = pros.getProperty("password");
		String url = pros.getProperty("url");
		String driverClass = pros.getProperty("driverClass");
		// 2.加载驱动
		Class.forName(driverClass);
	}

我的博客:https://blog.csdn.net/txb116424

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二、获取数据库连接 的相关文章

随机推荐

  • Unsatisfied dependency expressed through field ‘userMapper‘问题解决

    SSM框架练手 mapper层 Autowire创建bean怎么也不成功 报错 org springframework beans factory UnsatisfiedDependencyException Error creating
  • JS 两个对象数组根据id去重 / 取补集

    let arr1 id 1 name a id 2 name b id 3 name c let arr2 id 1 name a let newArr arr1 filter item gt arr2 some val gt item1
  • 硬盘运行与“AHCI 模式”还是“IDE 模式” 分类: 生活百科 ...

    如今SATA硬盘越来越流行 最新购买或者组装的电脑 基本都安装新一代的SATA硬盘 由于绝大多数BIOS初始设置是 IDE模式 安装的windows XP和vista系统 并没有运行发挥最大性能的 AHCI模式 到底自己的系统是否运行与 A
  • SQL语句详解(四)——SQL联表查询

    今天我们继续给大家介绍MySQL相关知识 本文主要内容是SQL联表查询 一 SQL联表查询简介 在前文SQL语句详解 三 SQL子查询中 我们给大家介绍了SQL子查询的相关知识和使用示例 实际上 如果涉及到SQL多个表之间的查询 使用SQL
  • Java面向对象——图书管理系统(小白也能看的懂!)

    文章目录 一 功能介绍 二 JAVA面向对象思想 包的分装 1 book包 2 user包 较复杂 3 operation包 接口包 三 代码框架的搭建 1 book包 Book类 2 book包 BookList类 3 operation
  • 手机如何远程控制挂机宝? 影云挂机宝

    首先我们需要知道挂机宝是什么 挂机宝就相当于云电脑 24小时在线挂机 1 手机远程的话我们需要用到一个软件 微软远程桌面 远程桌面软件很多 这个随意 喜欢用哪个都行 安卓下载 https www lanzous com i2i8bti 密码
  • android Jar文件的数字签名

    转自 http hubingforever blog 163 com blog static 17104057920118104058241 JAR文件可以用 jarsigner工具或者直接通过 java securityAPI 签名 签名
  • 利用ChatGPT提高代码质量的5种方法

    本文首发于公众号 更AI power ai 欢迎关注 编程 AI干货及时送 5个可以提升你日常工作效率的ChatGPT特性 如何利用它提高代码质量 ChatGPT已经彻底改变了开发代码的方式 然而 大多数软件开发人员和数据专业人员仍然没有使
  • 坐标移动Python

    A 向左移动 D 向右移动 W 向上移动 S 向下移动 从 0 0 点开始移动 输入 合法坐标为A 或者D或者W或者S 数字 两位以内 非法坐标点需要进行丢弃 如AA10 A1A YAD 等 flag input split for ite
  • python如何快速采集美~女视频?无反爬

    人生苦短 我用python 这次康康能给大家整点好看的不 环境使用 Python 3 8 Pycharm mou歌浏览器 mou歌驱动 gt 驱动版本要和浏览器版本最相近 lt 大版本一样 小版本最相近 gt 模块使用 requests g
  • ARM Mbed网络监控温度

    硬件 软件 介绍 温度测量是最基本 最常执行的测量之一 它可以是房间的温度 人的温度或设备的温度 能够通过Internet远程监视温度具有许多潜在的重要应用 例如 许多老人独自生活 如果他们生病了 可能要过一段时间才能发现他们处于危机中 如
  • 蜡笔小新学java

    javase基础 javase基础持续更新中 标识符 基本数据类型 随机数 算数运算符 Scanner扫描枪 赋值运算符 扩展赋值运算符 关系运算符 逻辑运算符 三元运算符 流程控制语句 if语法 switch语句 流程控制语句之循环结构
  • 基于 PyTorch实现YOLOv5

    目录 The First Article 前言 实现环境 基本流程 数据准备 建立模型 训练模型 模型评估 图片预测 视频预测 The First Article 前言 本文记录基于PyTorch实现Github作者ultralytics的
  • Audience Insights被下架后,Facebook广告定位的最佳替代方案

    从 2021 年 7 月 1 日起 Audience Insights 将不再可用 相反 我们建议人们使用 Facebook Business Suite Insights 该工具可让你访问 Facebook 和 Instagram 上的受
  • zookeeper看这一篇就够了

    第一章 zookeeper简介 第1节 zookeeper的由来 1 2 3 4 1 zookeeper最早起源于雅虎研究院的一个研究小组 2 在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调 并且这个系统还有单点问题 3
  • opencv中match与KnnMatch返回值解释

    match与KnnMatch返回值解释 之前一直不明白match与knnmatch的返回值到底是什么 查阅了一些资料才理解 其实二者都是返回的DMatch类型的数据结构 先说一下 match bf cv BFMatcher create m
  • OpenCv.js(图像处理)学习历程

    opencv js官网 4 5 0文档 以下内容整理于opencv js官网 简介 OpenCV由Gary Bradski于1999年在英特尔创建 第一次发行是在2000年 OpenCV支持c Python Java等多种编程语言 支持Wi
  • linux虚拟机18.04无法使用电脑自带摄像头

    TOC教你怎么正确开启摄像头 首先查看你的window下摄像头是否正常使用 简单操作 可以点击 开始 搜索相机运行 如果运行成功就说明在window下可以正常使用 虚拟机如何调用摄像头 我是linux18 04 可以简单测试一下电脑自带摄像
  • CUDA编程基础

    文章目录 Cuda编程结构 编程语句 获取GPU数量 获取设备属性 设置设备参数 Parameters Parameters 释放与GPU相关的所有资源 主机与设备都可用的内存函数 时间函数 CUDA核函数 函数类型限定符 CUDA核函数的
  • 二、获取数据库连接

    一 Driver 接口 java sql Driver 接口是所有 JDBC 驱动程序需要实现的接口 这个接口是提 供给数据库厂商使用的 不同数据库厂商提供不同的实现 在程序中不需要直接去访问实现了 Driver 接口的类 而是由驱动程序管