Java之DriverManager简单介绍_一冫一冫一冫冫那么java driver commuter winter bird-程序员宅基地

技术标签: Java  一步一步学Java  

开心一笑

爱神和月老
甲:“你知道西方国家闹离婚的为什么比中国的多吗?”
乙:“这还不简单,因为西方的爱神丘比特是个娃娃,而中国的是月下老人,经验当然丰富得多!”

视频教程

大家好,我录制的视频《Java之优雅编程之道》已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……

视频地址:http://edu.csdn.net/lecturer/994

提出问题

DriverManager类的简单学习???

解决问题

DriverManager在java.sql这个包里面,管理一组 JDBC 驱动程序的基本服务

package com.evada.de;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.util.Enumeration;

/**
 * 用静态工厂方法管理一个唯一的可重用的连接
 * Created by Ay on 2016/5/1.
 */
public class ConnUtils{

private ConnUtils(){}
private static Connection con;
//在静态代码块中创建与数据库的连接
static{
    try{
        //postgresql驱动名称
        Class.forName("org.postgresql.Driver");
        //数据库连接路径
        String url = "jdbc:postgresql://127.0.0.1:5432/postgres";
        //用户名和密码
        con = DriverManager.getConnection(url, "postgres", "888888");
    }catch(Exception e){
        throw new RuntimeException(e.getMessage(),e);
    }
}
//使用一个静态方法-静态工厂方法,返回connection实例
public static Connection getCon(){
    return con;
}

//main函数测试用
public static void main(String[] args) {
    //获取所有的数据库驱动
    Enumeration<Driver> driverEnum = DriverManager.getDrivers();
    //打印出所有驱动信息
    while(driverEnum.hasMoreElements()){
        System.out.println(driverEnum.nextElement());
    }
}
}

运行结果:

org.mariadb.jdbc.Driver@7cef4e59
com.alibaba.druid.proxy.DruidDriver@3ada9e37
com.alibaba.druid.mock.MockDriver@4ec6a292
org.postgresql.Driver@71c7db30

解释,因为我们的项目包里有如下图片的数据库驱动,所以会打印下面信息

这里写图片描述

这里写图片描述

这里写图片描述

这两者的区别:
DriverManager.registerDriver(new Driver());
Class.forName(“com.mysql.jdbc.Driver”);

org.postgresql.Driver类源码如下,可以看出postgresql是通过单例形式,new一个驱动Driver,也就是说在连接数据库是只new了一个Driver

static {
        sharedTimer = new SharedTimer(logger);

        try {
            //注册
            register();
        } catch (SQLException var1) {
            throw new ExceptionInInitializerError(var1);
        }

        protocols = new String[]{
   "jdbc", "postgresql"};
    }

    public static void register() throws SQLException {
        if(isRegistered()) {
            throw new IllegalStateException("Driver is already registered......);
        } else {
            Driver registeredDriver = new Driver();
            DriverManager.registerDriver(registeredDriver);
            registeredDriver = registeredDriver;
        }
    }

再来看看DriverManager的源码,它会把Driver包装到DriverInfo中,

//
public static synchronized void registerDriver(java.sql.Driver driver,
            DriverAction da)
        throws SQLException {

        /* Register the driver if it has not already been added to our list */
        if(driver != null) {
            //将驱动包装到DriverInfo中
            registeredDrivers.addIfAbsent(new DriverInfo(driver, da));
        } else {
            // This is for compatibility with the original DriverManager
            throw new NullPointerException();
        }

        println("registerDriver: " + driver);

    }

Class.forName(“com.mysql.jdbc.Driver”);
结论:DriverManager.registerDriver(new Driver()); 多new一个Driver浪费;而Class.forName(“com.mysql.jdbc.Driver”); 单例形式,更推荐……

读书感悟

来自《一公升的眼泪》

  • 大家的心意,我都接受并且放在了心底 但是妈妈,我不是想要一个过得很舒服的地方 我是在想,今后该如何生活下去 现在的我,只能接受大家的照顾
    站也站不稳,说也说不清 尽管如此,这是我自己的身体,我不能放弃。
  • 我还不想放弃用自己的脚走路
  • 想家,电话 妈妈,睡不着,害怕闭上眼睛 想给家里打电话的,拨了好几次,我想听妈妈 的声音 可是总按不好,救救我,妈妈~~~~~
    没有了,我可以做的事,没有了。

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎转载,点赞,顶,欢迎留下宝贵的意见,多谢支持!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huangwenyi1010/article/details/51317544

智能推荐

如何成为优秀的技术主管?你要做到这三点 -程序员宅基地

文章浏览阅读139次。阿里妹导读:技术主管,又叫「技术经理」,英文一般是 Tech Leader ,简称 TL。随着工作经验的不断积累,能力的不断提升,每个人都有机会成为Team Leader。然而在机会到来前,我们必须提前做好准备,对TL的工作职责有一定了解。当然,这也会为当下更好地配合TL工作打下基础。今天,阿里巴巴高级技术专家云狄将结合自己多年的经验,从开发规范、..._随着数据量的增大系统性能会不会出现明显问题?

Python 中的元组-程序员宅基地

文章浏览阅读252次,点赞9次,收藏4次。使用圆括号而非中括号来标识,定义元组后,就可使用索引来访问其元素,就像访问列表元素一样注:元组可以容纳多个数据和不同类型的数据,并且数据是有序存储的,元组不支持修改元素。

你好啊!这是今天人工智能精选要闻〔12.21〕-程序员宅基地

文章浏览阅读441次。作者|预见出品|遇见人工智能(微信ID: gowithai)期数|总第2017093期 每天的AI桌边谈资福利|点标题下蓝字,或微信搜“遇见人工智能”,关注后回复"报告",1秒钟获取麦肯锡、德勤等48份顶级最新AI报告。AI要闻百度与华为达成全面战略合作12月21日,百度与华为消费者业务共同宣布达成全面战略合作。未来双方将在互联网服务和内容生态、AI平台和技术等方面展开全方位深入合作,共同构建多赢_抖音37891604

【 VFE------多层体素特征编码——Stacked Voxel Feature Encoding】_体素vfe-程序员宅基地

文章浏览阅读661次。代码】【 VFE------多层体素特征编码——Stacked Voxel Feature Encoding】_体素vfe

线索二叉树和哈夫曼树_ltag是什么-程序员宅基地

文章浏览阅读612次,点赞2次,收藏2次。{//数据域//左孩子或线索指针//右孩子或线索指针左标志ltag=0,表示lchild指向左孩子结点;ltag=1,表示lchild指向前驱结点右标志rtag=0,表示rchild指向右孩子结点;rtag=1,表示rchild指向后继结点二叉树线索化的基本思想:二叉树的线索化实质上是遍历一棵二叉树。在遍历过程中,访问结点的操作是检查此结点的左、右指针域是否为空,如果为空,将它指向其前驱或后继结点的线索路径:是指从一个结点到另一个结点之间的分支序列。路径长度。_ltag是什么

Linux高级命令之find详解及实际应用_find . -name 搜索内容,命令的作用-程序员宅基地

文章浏览阅读1w次。本文将为您详细介绍Linux和Unix系统下的强大工具find命令,包括基本语法、常用选项和参数、高级用法和实际应用等内容。通过本文的学习,您将掌握如何使用find命令在文件系统中搜索文件和文件夹,并进行操作和管理。此外,还包括一些实际的应用场景,如在Linux中找到所有.log文件、查找最近更改的文件和删除所有tmp文件等,帮助您更好地理解如何使用find命令。_find . -name 搜索内容,命令的作用

随便推点

仅输入单张图片,就能“看”出物体材质!这篇图形学论文已被SIGGRAPH 2021收录...-程序员宅基地

文章浏览阅读1.2k次。OPPO日前,计算机图形学顶级国际学术会议ACM SIGGRAPH 2021收录了Highlight-aware Two-stream Network for Single-image ..._图片分析 判断材质

mysql 12_Navicat for MySQL12免费版-程序员宅基地

文章浏览阅读5.6k次。Navicat for MySQL12免费版是为mysql数据库推出的一款免费的管理软件,主要功能包括sql创建工具、编辑器、数据传输、导入或导出、报表、数据或结构同步等多项功能,为数据库管理、开发和维护提供了更完美的解决方案,兼容Drizzle、OurDelta 和 Percona Server等,适用于mysql3.21以上的版本。软件功能Navicat CloudNavicat for My..._navicat for mysql12

ubuntu18.04 安装texlive && texstudio_texlive2022 ubuntu18-程序员宅基地

文章浏览阅读2.8k次。使用的是清华源1、安装texlivesudo apt install texlive-full2、安装texstudio sudo apt install texstudio 3、测试,新建tex文件,拷贝下面代码,运行\documentclass{article}\usepackage{CJKutf8}\begin{document} \begin{CJK..._texlive2022 ubuntu18

CentOS7.9基于Apache2.4+Php7.4+Mysql8.0+Agent2架构部署Zabbix6.0LTS 亲测验证完美通过方案_php7.4 mysql8-程序员宅基地

文章浏览阅读1.1k次,点赞22次,收藏15次。Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。Zabbix 是一个企业级的开源分布式监控解决方案。Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。_php7.4 mysql8

2023年的深度学习入门指南(21) - 百川大模型_百川大模型怎么使用-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏25次。前面我们用了三节的篇幅介绍了目前最强大的开源模型LLaMA2。这一节我们说一说国产大模型的一个代表,百川大模型。_百川大模型怎么使用

C/C++高级语言程序设计课程设计任务书[2022-01-02]_题目四、医院预约系统(难度系数**) 模拟微信公众号“美丽厦门智慧健康”,用c语言-程序员宅基地

文章浏览阅读466次。高级语言程序设计课程设计任务书课程设计名称 中文:高级语言程序设计课程设计英文:Computer Programming Basic Comprehensive Practice适用专业 网络22 培养层次 本科学期 第1学期 周数 1.5 学分 1 总学时 1.5周一、课程设计目的与要求课程设计目的在理论学习和基础实验的基础上,开发规模较大的程序,掌握应用计算机解决实际问题的基本方法,熟悉C程序开发的全过程。_题目四、医院预约系统(难度系数**) 模拟微信公众号“美丽厦门智慧健康”,用c语言

推荐文章

热门文章

相关标签