方法一:通过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());
}
}
配文件提供给大家:
以下是连接成功情况: