一、通过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/xijiandatabase?serverTimezone=CTT
user=root
password=1230