Java获取数据库连接的几种方式

本文使用的环境为Jdk8、使用的数据库为MySQL8

方式一:

		Driver driver = new com.mysql.cj.jdbc.Driver();
        String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
        Properties properties = new Properties();
        properties.setProperty("user", "root");
        properties.setProperty("password", "2u5k6p2h");
        Connection connect = driver.connect(url, properties);
        System.out.println(connect);

在方式一中,Driver是oracle官方提供的一个接口,在该接口中声明了connect方法,该接口是官方提供各大数据库厂商的一种规范,所有的数据库厂商都需要遵循,实现该接口。
在代码中com.mysql.cj.jdbc.Driver是mysql数据库实现Driver接口的实现类,在该类中实现了connect方法,该方法有两个参数,第一个参数为url也就是数据库的地址,第二个参数为info该参数为Properties类型,在这个参数中必须传入user和password,其他非必要,该方法返回Connection对象,也就是数据库连接对象。下图为执行结果
在这里插入图片描述

方式二:

		Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver)aClass.newInstance();
        String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
        Properties properties = new Properties();
        properties.setProperty("user", "root");
        properties.setProperty("password", "2u5k6p2h");
        Connection connect = driver.connect(url, properties);
        System.out.println(connect);

方式二获取连接主要是用反射的方式先获取Driver对象,然后利用该对象获取Connection对象,和方式一区别就是获取Driver的对象的方式不同。
在这里插入图片描述
方式三:

	    Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver)aClass.newInstance();
        String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
        DriverManager.registerDriver(driver);
        Connection connection = DriverManager.getConnection(url, "root", "2u5k6p2h");
        System.out.println(connection);

方式三使用DriverManager类获取Connection对象,该方式先使用 DriverManager.registerDriver注册Driver驱动,然后使用 DriverManager.getConnection获取Connection对象,该方式的结果如下
在这里插入图片描述
方式四:

		Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
        Connection connection = DriverManager.getConnection(url, "root", "2u5k6p2h");
        System.out.println(connection);

方式四使用Class.forName(“com.mysql.cj.jdbc.Driver”)先加载Driver类,该类中有静态代码块会自动注册驱动,当该类被加载的时候会执行该代码块,所以就不需要手动注册Driver对象了,其他和方式三一致。运行结果如下
在这里插入图片描述
方式五:(只对于获取mysql连接有用)

		String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
        Connection connection = DriverManager.getConnection(url, "root", "2u5k6p2h");
        System.out.println(connection);

方式五mysql的jar包在导入的时候会自动加载该Driver驱动,原因如下
在这里插入图片描述
所以在导入jar包的时候会自动加载Driver驱动类,不需要写Class.forName(“com.mysql.cj.jdbc.Driver”)当然这只对于获取mysql连接有效
该方式的运行结果如下
在这里插入图片描述
方式六:

		InputStream resourceAsStream = Main.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties properties = new Properties();
        properties.load(resourceAsStream);
        Class.forName(properties.getProperty("driver"));
        Connection connection = DriverManager.getConnection(properties.getProperty("url"),
                                properties.getProperty("user"),
                                properties.getProperty("password"));
        System.out.println(connection);

前几种方式耦合性过于过高,该方式只是对于前几种的改进,把Driver,Url,user,password写入到外部文件中,使耦合性降低,编译次数减少,降低打包次数。

总结:
Driver获取Connection的方式虽然可行,但是在实际中获取对象一般使用DriverManage获取,四个参数一般写入外部外部文件中。Class.forName()虽然可以不写,但是只针对于获取mysql连接有效,所以有多种数据库参与的时候,这个最好写入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值