当前位置: 首页 > article >正文

JDBC注册驱动及获取连接

文章目录

  • 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.kler.cn/news/308165.html

相关文章:

  • 【MATLAB GUI 设计第一篇 】
  • packer-fuzzer使用
  • 从0-1 用AI做一个赚钱的小红书账号(不是广告不是广告)
  • 32.递归、搜索、回溯之floodfill算法
  • 【D3.js in Action 3 精译_023】3.3 使用 D3 将数据绑定到 DOM 元素
  • 掌握这几个酱酒特点术语,聊天更显内行
  • 17、电科院FTU检测标准学习笔记-录波性能
  • GeoPandas在地理空间数据分析中的应用
  • ElasticSearch-2-核心语法集群高可用实战-Week2
  • 二叉树总结篇(2)
  • Imagen:重塑图像生成领域的革命性突破
  • websocket 和sip 在协议层面有哪些区别,为什么要各自这样设置协议
  • 鸿蒙开发笔记_电商严选02_登录页面跳转到我的页面、并传值
  • Google 工程师开始用Rust 语言开发 Android 固件
  • 简单了解Maven与安装
  • 数组与贪心算法——649、678、420 数字与贪心 343(3中1难)
  • 【算法】差分思想:强大的算法技巧
  • Sybase「退役」在即,某公共卫生机构如何实现 SAP Sybase 到 PostgreSQL 的持续、无缝数据迁移?
  • MySQL日志binlog和redo log区别
  • 算法面经手撕系列(3)--手撕LayerNormlization
  • 【算法】滑动窗口—最小覆盖子串
  • MyBatis的配置文件详解
  • druid jdbc 执行 sql 输出 开销耗时
  • Linux下抓包分析Java应用程序HTTP接口调用:基于tcpdump与Wireshark的综合示例
  • 秒验HarmonyOS NEXT集成指南
  • ERP进销存管理系统的业务全流程 Axure高保真原型源文件分享
  • 仪表盘检测系统源码分享
  • Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的
  • 【运维监控】influxdb 2.0 + grafana 11 监控jmeter 5.6.3 性能指标(2)
  • Git进阶(十五):Git LFS 使用详解