欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JDBC简介及连接MySQL数据库Code

程序员文章站 2024-01-12 13:06:34
...

JDBC

在Java中,数据库存取技术分类:

  • JDBC直接访问数据库

  • JDO技术

  • 第三方O/R工具,如Hibernate, mybatis 等

      JDBC是java访问数据库的基石,JDO, Hibernate等只是更好的封装了JDBC
    

JDBC基础

  • JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这个类库可以以一种标准的方法、方便地访问数据库资源

  • JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。

  • JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

    我们认为的连接应该是如此
    JDBC简介及连接MySQL数据库Code
    但实际是这样
    JDBC简介及连接MySQL数据库Code

JDBC接口(API)包括两个层次:

面向应用的API

  • Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。

面向数据库的API

  • Java Driver API,供开发商开发数据库驱动程序用。

JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接口编程即可。不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。
                                                ————面向接口编程

JDBC连接MySQL数据库的连接测试。

有五种方式,依次进行迭代。最终方式五(推荐使用)。主要是数据和代码解耦,并且在后期如果部署到服务器上后,我们只需要修改配置文件即可。不需要再全部重新打包。
       我这边使用的是MySQL 8.0.21,所以所用的驱动是com.mysql.cj.jdbc.Driver,对于MySQL5的版本则还是原来的com.mysql.jdbc.Driver。并且高版本的MySQL需要设置时区,低版本的不需要没有太大影响。
URL:
jdbc:mysql://localhost:3306/test?serverTimezone=GMT

代码

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

import org.junit.Test;

import com.mysql.cj.jdbc.Driver;

public class ConnectionTest {

	/**
	 *	 方式一
	 */
	@Test
	public void connectionTest1() throws Exception {
		Driver driver = (Driver) new com.mysql.cj.jdbc.Driver();
		
		String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT";
		//将用户和密码封装到Properties中
		Properties info = new Properties();
		info.setProperty("user", "root");
		info.setProperty("password", "123456");
		
		Connection connect = driver.connect(url, info);
		System.out.println(connect);
	}
	/**
	 * 	方式二:对方式一的迭代,在如下的程序中不会出现第三方的API,使得程序具有可移植性
	 */
	@Test
	public void connectionTest2() throws Exception {
		//1、获得Driver的实现类的对象,通过反射
		Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
		Driver driver = (Driver) clazz.newInstance();
		
		//2、通过要连接的数据库
		String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT";
		
		//3、提供连接需要的用户和密码
		Properties info = new Properties();
		info.setProperty("user", "root");
		info.setProperty("password", "123456");
		
		//4、获得连接
		Connection connect = driver.connect(url, info);
		System.out.println(connect);
		
	}
	/**
	 * 	方式三:使用  DriverManager 替换 Driver
	 */
	@Test
	public void connectionTest3() throws Exception {
		
		Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
		Driver driver = (Driver) clazz.newInstance();
		
		String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT";
		String user = "root";
		String password = "123456";
		//注册驱动
		DriverManager.registerDriver(driver);
		//获取连接
		Connection connection = DriverManager.getConnection(url, user, password);
		System.out.println(connection);
	}
	/**
	 * 	方式四:由于Driver在编译时就提供静态代码块实现了注册驱动
	 */
	@Test
	public void connectionTest4() throws Exception {
		
		Class.forName("com.mysql.cj.jdbc.Driver");
		
		String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT";
		String user = "root";
		String password = "123456";
		/**
		static {
		        try {
		            java.sql.DriverManager.registerDriver(new Driver());
		        } catch (SQLException E) {
		            throw new RuntimeException("Can't register driver!");
		        }
		    }
		 */
		Connection connection = DriverManager.getConnection(url, user, password);
		System.out.println(connection);
	}
	/**
	 * 	方式五:最终版。
	 * 	好处:达到了数据与程序的解耦。利于后期的修改
	 */
	@Test
	public void connectionTest5() throws Exception {
		InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("db.properties");
		
		Properties properties = new Properties();
		properties.load(is);
		
		String url = properties.getProperty("url");
		String user = properties.getProperty("user");
		String password = properties.getProperty("password");
		String classDriver = properties.getProperty("classDriver");
		
		Class.forName(classDriver);
		Connection connection = DriverManager.getConnection(url, user, password);
		System.out.println(connection);
		
	}
	
}

配置文件(db.properties)

url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT
user=root
password=123456
classDriver=com.mysql.cj.jdbc.Driver
相关标签: mysql jdbc