一、通过Driver接口或者DriverManager管理类来连接数据库

时间:2022-06-05 03:51:04
 

一、通过driver接口连接数据库

/**
	 * Driver 是一个接口: 数据库厂商必须提供实现的接口. 能从其中获取数据库连接.
	 * 可以通过 Driver 的实现类对象获取数据库连接.
	 * 
	 * 1. 加入 mysql 驱动
	 * 1). 解压 mysql-connector-java-5.1.7.zip
	 * 2). 在当前项目下新建 lib 目录
	 * 3). 把 mysql-connector-java-5.1.7-bin.jar 复制到 lib 目录下
	 * 4). 右键 build-path , add to buildpath 加入到类路径下.s
	 * @throws SQLException 
	 */
	@Test
	public void testDriver() throws SQLException {
		//1. 创建一个 Driver 实现类的对象
		Driver driver = new com.mysql.cj.jdbc.Driver();
	
		//2. 准备连接数据库的基本信息: url, user, password
		String url = "
jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
";Properties info = new Properties();info.put("user", "root");info.put("password", "1230");//3. 调用 Driver 接口的 connect(url, info) 获取数据库连接Connection connection = driver.connect(url, info);System.out.println(connection);}

以上方式连接数据库是最基本的方式,但是没有一定的灵活性,所以可以用Properties类读取properties文件来进行解耦,以便通过更改配置文件而不更改代码来进行与其他数据库的连接

String driverClass = null;
		String jdbcUrl = null;
		String user = null;
		String password = null;
		
		//读取类路径下的 jdbc.properties 文件
		InputStream in = 
				getClass().getClassLoader().getResourceAsStream("jdbc.properties");
		Properties properties = new Properties();
		properties.load(in);
		driverClass = properties.getProperty("driver");
		jdbcUrl = properties.getProperty("jdbcUrl");
		user = properties.getProperty("user");
		password = properties.getProperty("password");
		
		//通过反射常见 Driver 对象. 
		Driver driver = 
				(Driver) Class.forName(driverClass).newInstance();
		
		Properties info = new Properties();
		info.put("user", user);
		info.put("password", password);
		
		//通过 Driver 的 connect 方法获取数据库连接. 
		Connection connection = driver.connect(jdbcUrl, info);
		
		return connection;
	}

二、通过DriverManager管理类连接数据库

/**
	 * DriverManager 是驱动的管理类. 
	 * 1). 可以通过重载的 getConnection() 方法获取数据库连接. 较为方便
	 * 2). 可以同时管理多个驱动程序: 若注册了多个数据库连接, 则调用 getConnection()
	 * 方法时传入的参数不同, 即返回不同的数据库连接。 
	 * @throws Exception 
	 */
	@Test
	public void testDriverManager() throws Exception{
		//1. 准备连接数据库的 4 个字符串. 
		//驱动的全类名.
		String driverClass = "com.mysql.cj.jdbc.Driver";
		//JDBC URL
		String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false";
		//user
		String user = "root";
		//password
		String password = "1230";
		
		//2. 加载数据库驱动程序(对应的 Driver 实现类中有注册驱动的静态代码块.)
		Class.forName(driverClass);
		
		//3. 通过 DriverManager 的 getConnection() 方法获取数据库连接. 
		Connection connection = 
				DriverManager.getConnection(jdbcUrl, user, password);
		System.out.println(connection); 
		
	}

通用性改写

public Connection getConnection2() throws Exception{
		//1. 准备连接数据库的 4 个字符串. 
		//1). 创建 Properties 对象
		Properties properties = new Properties();
		
		//2). 获取 jdbc.properties 对应的输入流
		InputStream in = 
				this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
		
		//3). 加载 2) 对应的输入流
		properties.load(in);
		
		//4). 具体决定 user, password 等4 个字符串. 
		String user = properties.getProperty("user");
		String password = properties.getProperty("password");
		String jdbcUrl = properties.getProperty("jdbcUrl");
		String driver = properties.getProperty("driver");
		
		//2. 加载数据库驱动程序(对应的 Driver 实现类中有注册驱动的静态代码块.)
		Class.forName(driver);
		
		//3. 通过 DriverManager 的 getConnection() 方法获取数据库连接. 
		return DriverManager.getConnection(jdbcUrl, user, password);
	}



——————————————————————————————————————

附上jdbc.properties配置文件的内容

#driver=oracle.jdbc.driver.OracleDriver
#jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl
#user=scott
#password=java

driver=com.mysql.cj.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/mydatabase2?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
user=root
password=1230