JDBC通过Driver接口获取数据库连接

方法一:通过Driver接口获取数据库连接(不具有通用性)

package com.atguigu.jdbc;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;

public class JDBCTest {
	/*
	 * 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 Build Path加入到类路径下。
	 */
	@Test
	public void testDriver() throws SQLException {
		//1.创建一个Driver实现类对象
		Driver driver = new com.mysql.jdbc.Driver();
		
		//2.准备连接数据库的基本信息:url, user, password
		String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false";
		Properties info = new Properties();
		info.put("user", "root");
		info.put("password", "wangjian");
		
		//调用Driver接口connect(url, info)获取数据库连接
		Connection connection = (Connection) driver.connect(url, info);
		System.out.println(connection);
	}
}
 

以下是连接成功情况:

方法二:数据库连接信息通过配置文件解耦的方式(解耦和--具有通用性)

配置文件实现法:

     1.编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接
     2.解决方案:把数据库驱动Driver实现类的全类名、url、password放入一个配置文件中,通过修改配置文件的方式实现和具体的数据库解耦和

package com.atguigu.jdbc;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;

public class JDBCTest {
	/*
	 * 编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接
	 * 解决方案:把数据库驱动Driver实现类的全类名、url、password放入一个配置文件中,通过修改配置文件的方式实现和具体的数据库解耦和
	 * @throw Exception
	 * 
	 */
	public Connection getConnection() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException, IOException {
		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 = (Connection) driver.connect(jdbcUrl, info);
		return connection;	
	}
	
	@Test
	public void testGetConnection() throws Exception, IllegalAccessException, ClassNotFoundException, SQLException, IOException {
		System.out.println(getConnection());
	}	

}
 

配文件提供给大家:

以下是连接成功情况:

猜你喜欢

转载自blog.csdn.net/wangjian530/article/details/82984553