我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Java】JDBC 数据库连接的演变

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Java】JDBC 数据库连接的演变

【Java】JDBC 数据库连接的演变[数据库教程]

环境搭建

使用Maven工程的依赖项,如果普通工程就点注释的地址下载jar包即可

<dependencies>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.19version>
        dependency>

        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.13version>
            <scope>testscope>
        dependency>
dependencies>

 

原始JDBC链接

    @Test
    public void connectionTest1() throws SQLException {
        // 获取驱动对象
        // 这是8+版本的驱动,5+版本的驱动是这样的com.mysql.jdbc.Driver
        Driver driver = new com.mysql.cj.jdbc.Driver();

        // 注入连接信息 这也是8+的链接方式,必须声明时区,5+版本 jdbc:mysql://localhost:3306/mysql
        String url = "jdbc:mysql://localhost:3306/mysql?serverTimezone=Asia/Shanghai";
        
        // 协议 jdbc:mysql:
        // 地址 localhost:
        // MySQL端口号 3306
        // 数据库 mysql
        // 参数 serverTimezone=Asia/Shanghai"

        // 配置对象封装账户信息
        Properties properties = new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","123456");

        // 注入信息,得到链接
        Connection connection = driver.connect(url,properties);

        //[email protected]
        System.out.println(connection);
    }

 

演变1 利用反射调取实现类创建驱动实例

    @Test // 提升可移植性,面向接口编程,不要出现第三方的API
    public void connectionTest2() throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        //使用反射动态,获取Driver实现类对象
        Class driverClass = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) driverClass.newInstance();
        
        String url = "jdbc:mysql://localhost:3306/mysql?serverTimezone=Asia/Shanghai";
        
        Properties properties = new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","123456");
        
        Connection connection = driver.connect(url,properties);
        
        System.out.println(connection);
    }

 

演变2 利用驱动管理者实现

    @Test // 用驱动管理者代替驱动对象
    public void connectionTest3() throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {

        Class driverClass = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) driverClass.newInstance();

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

        String url = "jdbc:mysql://localhost:3306/mysql?serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "123456";

        // 用驱动管理者配置链接信息去获取连接对象
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println(connection);
    }

 

演变3 驱动优化

    @Test // 驱动再优化
    public void connectionTest4() throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        // 注册驱动已经不需要我们来编写了
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/mysql?serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "123456";
        // 用驱动管理者配置链接信息去获取连接对象
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

 

演变4 驱动完全不需要写了 jdbc5+版本支持此写法

    @Test // 驱动再再优化 在5+版本已经不需要驱动这玩意儿了
    public void connectionTest4() throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        String url = "jdbc:mysql://localhost:3306/mysql?serverTimezone=Asia/Shanghai";
        String user = "root";
        String password = "123456";
        // 用驱动管理者配置链接信息去获取连接对象
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

 

演示5 配置信息不再使用硬编码的方式注入

配置可随意更改,实现了数据和代码的解耦

    @Test //
    public void connectionTest5() throws SQLException, ClassNotFoundException, IOException {
        InputStream inputStream = ConnectorTest.class.getClassLoader().getResourceAsStream("jdbc.properties");

        Properties properties = new Properties();
        properties.load(inputStream);
        
        String driverClass = properties.getProperty("driverClass");
        String url = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");

        //加载驱动
        Class.forName(driverClass);
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

 

在Maven工程,配置文件放在sources里面

在生成打包文件时,自动生成对应的配置文件

技术分享图片

 

非Maven的普通项目可采用下面这两种方式读取配置文件

    @Test 
    public void connectionTest6() throws SQLException, ClassNotFoundException, IOException {
        // 返回URL的编码 %20  类加载器读取 文件的位置默认是在当前Module或者项目的class="lazy" data-src包下
        String path = Loader.class.getClassLoader().getResource("jdbc.properties").getFile();
        // 需要解码
        String decode = URLDecoder.decode(path, "UTF-8");
        System.out.println(path);
        System.out.println(decode);
        Properties properties = new Properties();
        properties.load(new FileInputStream(decode));

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

        //加载驱动
        Class.forName(driverClass);
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

    @Test //
    public void connectionTest7() throws SQLException, ClassNotFoundException, IOException {
       
        Properties properties = new Properties();
        properties.load(new FileInputStream("class="lazy" data-srcjdbc.properties"));

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

        //加载驱动
        Class.forName(driverClass);
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

 

【Java】JDBC 数据库连接的演变

原文:https://www.cnblogs.com/mindzone/p/12762480.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【Java】JDBC 数据库连接的演变

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【Java】JDBC 数据库连接的演变

环境搭建使用Maven工程的依赖项,如果普通工程就点注释的地址下载jar包即可 mysql mysql-connector-java 8.0.19
【Java】JDBC 数据库连接的演变
2017-04-28

java中jdbc怎么连接数据库

在Java中使用JDBC连接数据库的步骤如下:1. 下载并安装数据库驱动程序:首先需要从数据库官方网站下载相应的JDBC驱动程序,并将其添加到项目的classpath中。2. 加载数据库驱动程序:使用`Class.forName()`方法加
2023-09-15

jdbc连接MySql数据库

jdbc连接MySql数据库package com.zhy;import com.mysql.jdbc.Driver;import java.sql.*;public class Te

	jdbc连接MySql数据库
2020-09-18

java连接数据库(jdbc)的标准规范

java连接数据库的标准规范JDBC全称:java database connectivity ,是sun公司提供的Java连接数据库的标准规范。localhost和127.0.0.1 都是表示当前电脑1、oracle Oracle Database,又名Or
java连接数据库(jdbc)的标准规范
2019-05-09

jdbc怎么连接数据库

小编给大家分享一下jdbc怎么连接数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!jdbc连接数据库的步骤:1、加载jdbc驱动程序;2、创建数据库的连接;3
2023-06-14

jdbc怎么连接sqlserver数据库

1、下载并安装SQL Server JDBC驱动程序,可以从Microsoft官方网站上下载相应的驱动程序。2、在Java项目中导入SQL Server JDBC驱动程序的jar包。3、使用以下代码连接SQL Server数据库:im
jdbc怎么连接sqlserver数据库
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录