0%

【JDBC】获取数据库连接

通过Java获取数据库连接,学习笔记

一、导入驱动jar包

  • 注意:本文使用的是IDEA集成编辑软件,mysql8.0数据库

  • (1)”File” —> “Project Structure”

  • (2)”Model” —> “Dependeincies” —> “+” —> “JARs or directories”
  • (3)选择jar包所在路径,然后”OK”即可

二、获取数据库连接

  • 以下会列出5种数据库连接方法,但每个方法是上一个方法的迭代,第五个版本是最终版,也是最推荐连接的方法

2.1 连接方式一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Test
public void testConnection() throws SQLException {
//1.提供连接数据的基本信息
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8";//数据库的位置
Properties info = new Properties();//配置文件
info.setProperty("user", "root");//用户
info.setProperty("password", "123");//密码

//2.获取Driver实现类对象
Driver driver = new com.mysql.cj.jdbc.Driver();

//3.调用connect方法连接数据库
Connection conn = driver.connect(url, info);//连接数据库
System.out.println(conn);//com.mysql.cj.jdbc.ConnectionImpl@4a668b6e
}
  • 说明:
    • (1)连接数据的方法:Connection connect(String url, java.util.Properties info)
    • (2)url格式:jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8
      • jdbc:mysql – 协议
      • localhost – ip地址
      • 3306 – 端口号
      • test – test数据库
      • ?serverTimezone=GMT%2B8 – 解决时区问题

2.2 连接方式二

  • 方式二是对方式一的优化,因为方式一出现了第三方的API
  • Driver driver = new com.mysql.cj.jdbc.Driver();
    • (上面代码出现了com.sql.cj.jdbc.Driver() 第三方API)
  • 可以通过反射来加载类,来创建对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Test
public void test() throws Exception {
//1.提供连接数据库的基本信息
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8";
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "123");

//2.获取Driver实现类对象
Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.getDeclaredConstructor().newInstance();

//3.创建Connection对象,连接数据库
Connection connect = driver.connect(url, info);
System.out.println(connect);
}

2.3 连接方式三

  • 使用DriverManager来代替Driver来获取连接
  • DriverManger连接数据库的方式,要比Driver简单,且方式多
  • 使用DriverManager要先进行注册驱动,才能获取连接
    • 注册驱动:
      • public static void registerDriver(java.sql.Driver driver)
    • 连接数据库:
      • public static Connection getConnection(String url)
      • public static Connection getConnection(String url, java.util.Properties info)
      • public static Connection getConnection(String url, String user, String password)
    • 常用第三种方法连接数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Test
public void test() throws Exception{
//1.提供连接数据库的基本信息
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8";
String user = "root";
String password = "123";

//2.获取Driver实现类对象
Class clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.getDeclaredConstructor().newInstance();

//3.注册驱动
DriverManager.registerDriver(driver);

//4.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}

2.4 连接方式四

  • 是方式三的优化,省略了方式三的一些不必要的操作
  • 反射获取驱动类会自动进行DriverManager的驱动注册,可以进行省略
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void test() throws Exception{
//1.提供另外三个基本信息
String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8";
String user = "root";
String password = "123";

//2.反射会自动进行驱动注册,可以省略步骤
Class.forName("com.mysql.cj.jdbc.Driver");

//3.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}

2.5 连接方式五(最终版)

  • 使用配置文件来读取连接数据库所需要的信息
  • 程序进行封装之后,可以直接修改配置文件而改变要读取的内容,而不用重新打开编辑器进行修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Test
public void test() throws Exception{
//1.创建输入流
FileInputStream fis = new FileInputStream("src\\jdbc.properties");

Properties pro = new Properties();
pro.load(fis);

//2.获取数据
String user = pro.getProperty("user");
String password = pro.getProperty("password");
String url = pro.getProperty("url");
String driverClass = pro.getProperty("DriverClass");

//3.反射加载驱动
Class.forName(driverClass);

//4.连接数据库
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
}