IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【JDBC - 核心技术】02 获取数据库连接 -> 正文阅读

[系统运维]【JDBC - 核心技术】02 获取数据库连接


第02章 获取数据库连接

创作日期:2021-12-06


2.1 要素一:Driver接口实现类

2.1.1 Driver接口介绍

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

2.1.2 加载与注册JDBC驱动

  • 加载驱动:加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的JDBC 驱动的类名
    • Class.forName("com.mysql.jdbc.Driver");
  • 注册驱动:DriverManager 类是驱动程序管理类,负责管理驱动程序
    • 使用DriverManager .registerDriver(com.mysql.jdbc.Driver)来注册驱动
    • 通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实例,因为 Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中,会调用 DriverManager.registerDriver()方法来注册自身的一个实例。

2.2 要素二:URL

  • JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。
  • JDBC URL的标准由三部分组成,各部分间用冒号分隔。
    • ???????jdbc:子协议:子名称
    • 协议:JDBC URL中的协议总是jdbc
    • 子协议:子协议用于标识一个数据库驱动程序
    • 子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务器端的ip地址),端口号,数据库名?,如下图:

  • 几种常用数据库的 JDBC URL

    • MySQL的连接URL编写方式:

      • jdbc:mysql://主机名称:mysql服务器端口号/数据库名称?参数=值&参数=值

      • jdbc:mysql://localhost:3306/atguigu

      • jdbc:mysql://localhost:3306/atguigu?useUnicode=true&characterEncoding=utf8???????(如果JDBC程序与服务器端的字符集不一致,会导致乱码,那么可以通过参数指定服务器端的字符集)

      • jdbc:mysql://localhost:3306/atguigu?user=root&password=123456

    • Oracle的连接URL编写方式:

      • ???????jdbc:oracle:thin:@主机名称:oracle服务器端口号:数据库名称

      • jdbc:oracle:thin:localhost:1521:atguigu

    • SQLServer的连接URL编写方式:

      • ???????jdbc:sqlserver://主机名称:sqlserver服务器端口号:DatabaseName=数据库名称

      • jdbc:mysql://localhost:1433:DatabaseName=atguigu


2.3 要素三:用户名和密码

  • user,password可以用“属性名=属性值”方式告诉数据库
  • 可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接

2.4 数据库连接方式举例

2.4.1 连接方式一

public class ConnectionTest1 {

    //方式一
    @Test
    public void testConnection1() throws SQLException {

        //1.获取Driver的实现类对象
        Driver driver = new com.mysql.jdbc.Driver();

        //2.提供要连接的数据库
        //jdbc:mysql:协议 localhost:ip地址 3306:默认mysql的端口号 test:test数据库
        String url = "jdbc:mysql://localhost:3306/data_test";  
        

        //3.提供连接需要的用户名及密码
        //将用户名和密码封装在 properties 当中
        Properties properties = new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","123456");

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

2.4.2 连接方式二

public class ConnectionTest2 {

    //方式二:对方式一进行的迭代,如下的程序不出现第三方的API,使得程序具有更好的可移植性
    @Test
    public void testConnection2() throws Exception {

        //1.获取Driver的实现类对象:使用反射
        Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) aClass.newInstance();

        //2.提供要连接的数据库
        //jdbc:mysql:协议 localhost:ip地址 3306:默认mysql的端口号 test:test数据库
        String url = "jdbc:mysql://localhost:3306/data_test";  

        //3.提供连接需要的用户名及密码
        //将用户名和密码封装在 properties 当中
        Properties properties = new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","123456");

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

2.4.3 连接方式三

public class ConnectionTest3 {

    //方式三:使用 DriverManager 替换Driver
    @Test
    public void testConnection3() throws Exception {

        //1.获取Driver的实现类对象:使用反射
        Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) aClass.newInstance();

        //2.提供要连接的数据库,账户名和密码
        //jdbc:mysql:协议 localhost:ip地址 3306:默认mysql的端口号 test:test数据库
        String url = "jdbc:mysql://localhost:3306/data_test";  
        String user = "root";
        String password = "123456";

        //3.注册驱动
        DriverManager.registerDriver(driver);

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

2.4.5 连接方式四

public class ConnectionTest4 {

    //方式四:使用 DriverManager 替换Driver
    @Test
    public void testConnection4() throws Exception {
        //1.提供要连接的数据库,账户名和密码
        //jdbc:mysql:协议 localhost:ip地址 3306:默认mysql的端口号 test:test数据库
        String url = "jdbc:mysql://localhost:3306/data_test";  
        String user = "root";
        String password = "123456";

        //2.加载驱动
        Class.forName("com.mysql.jdbc.Driver");

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

2.4.4 连接方式五(最终版)

public class ConnectionTest5 {

    //方式四:通过读取配置文件的方式获取连接,实现了数据与代码的分离,实现了解耦
    @Test
    public void testConnection5() throws Exception {
        //1.读取配置文件
        InputStream inputStream = ConnectionTest5.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties properties = new Properties();
        properties.load(inputStream);

        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        String driverClass = properties.getProperty("driverClass");

        //2.加载驱动
        Class.forName(driverClass);

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

上一节:

下一节:

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 11:09:45  更:2022-04-23 11:10:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:28:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码