获取数据库连接的五种方式

2 篇文章 1 订阅

目录

方式一:直接通过数据库厂商提供的相关驱动

方法二:通过反射的方式来构造Driver对象

方式三:使用DriverManager来替换Driver获取连接

方法四:省略创建Driver对象和注册驱动

方式五:通过配置文件的方式

每种方式迭代的原因

方式五的优点


方式一:直接通过数据库厂商提供的相关驱动

步骤

  1. 导入相关驱动(Build Path)
  2. 创建Driver类的实例化对象
  3. 获取要连接数据库的URL
  4. 创建Properties类的实例化对象,将账号和密码封装到该对象中
  5. 通过Driver实例化对象调用connect(String url,Properties info)方法获取connection对象
package connection;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;

import org.junit.jupiter.api.Test;

public class ConnectionTest {
	@Test
	public void test() throws SQLException {
		//创建Driver实例
		Driver driver=new com.mysql.cj.jdbc.Driver();
		//获取要读取数据库的URL
		String url="jdbc:mysql://localhost:3306/test04_emp";
		//将账号密码封装到Properties对象中
		Properties info=new Properties();
		info.setProperty("user", "root");
		info.setProperty("password", "abc123");
		//通过Driver的对象获取连接
		Connection connect=driver.connect(url, info);
		//调用连接的toString()
		System.out.println(connect);
	}
}

方法二:通过反射的方式来构造Driver对象

  1. 通过Class的forName(Stirng className)获取驱动的运行时类。
  2. 通过运行时类的newInstance()来获取运行时类的对象。
  3. 获取URL和将账号密码封装到Properties对象中。
  4. 使用运行时类的对象调用connect()方法获取连接。
@Test
	public void test2() throws Exception {
		//通过反射的方式获取运行时类
		Class clazz=Class.forName("com.mysql.cj.jdbc.Driver");
		//通过反射的方式创建运行时类对象
		Driver driver=(Driver)clazz.newInstance();
		//获取URL
		String url="jdbc:mysql://localhost:3306/test04_emp";
		//封装账号密码
		Properties info=new Properties();
		info.setProperty("user", "root");
		info.setProperty("password", "abc123");
		//获取连接
		Connection connect=driver.connect(url, info);
		System.out.println(connect);
	}

方式三:使用DriverManager来替换Driver获取连接

  1. 获取Driver的实现类对象。
  2. 使用DriverManager的registerDriver(Driver driver)方法来注册驱动。
  3. 提供URL、账号和密码。
  4. 使用DriverManager的getConnection(String url,String user,String password)来获取连接。
@Test
	public void test3() throws Exception {
		//通过反射的方式获取Driver对象
		Driver driver=(Driver)Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
		//调用DriverManager的registerDriver(Driver driver)方法注册驱动
		DriverManager.registerDriver(driver);
		//提供账号、密码和URL
		String user="root";
		String password="abc123";
		String url="jdbc:mysql://localhost:3306/test04_emp";
		//调用DriverManager的getConnection()方法来获取连接
		Connection connect=DriverManager.getConnection(url,user,password);
		System.out.println(connect);
		/*getConnection()还有一种版本:getConnection(String url,Properties info)
		 * 可以参考方法一和方法二。
		 */
	}

方法四:省略创建Driver对象和注册驱动

  1. 通过反射将Driver类加载到内存中。
  2. 提供账号、密码和URL。
  3. 通过DriverManager调用getConnection()获取连接。

注意:这里之所以可以省略创建Driver对象和注册驱动是因为,创建Driver对象的目的是给DriverManager调用registerDriver()注册驱动时提供参数,而在Driver类加载到内存中时,有一个static方法会自动调用registerDriver()方法,从而自动注册驱动。

@Test
	public void test4() throws Exception {
		//通过反射将Driver加载到内存中
		Class.forName("com.mysql.cj.jdbc.Driver");
		//提供相关信息
		String user="root";
		String password="abc123";
		String url="jdbc:mysql://localhost:3306/test04_emp";
		//通过getConnection()获取连接
		Connection connect=DriverManager.getConnection(url,user,password);
		System.out.println(connect);
	}

方式五:通过配置文件的方式

  1. 创建配置文件
  2. 通过类的加载器生成指向配置文件的流
  3. 创建Properties对象,通过调用load()方法将配置文件加载到内存中
  4. 通过Properti对象的getProperty(String key)获取相关信息
  5. 通过反射的方式加载驱动
  6. 调用getConnection()获取连接
@Test
	public void test5() throws Exception {
		//通过类加载器创建一个指向配置文件的流
		InputStream input=ConnectionTest.class.getClassLoader().getResourceAsStream("test.properties");
		//创建Properties对象
		Properties infoProperties=new Properties();
		//以流为参数调用load()加载配置文件
		infoProperties.load(input);
		//获取相关信息
		String driver=infoProperties.getProperty("driver");
		String url=infoProperties.getProperty("url");
		String user=infoProperties.getProperty("user");
		String password=infoProperties.getProperty("password");
		//加载驱动
		Class.forName(driver);
		//获取连接
		Connection connection= DriverManager.getConnection(url, user, password);
		System.out.println(connection);
	}

我们通常都使用方式五

每种方式迭代的原因

第一种方式是直接通过使用指定数据库厂商的驱动来获取数据库连接的,但是我们希望程序具有更好的可移植性,所以采用反射的方式来获取驱动,这就产生了第二种方法;在开发中,我们通常都不使用Driver来获取连接,而是通过使用DriverManager来获得数据库连接,这就从第二种方式到了第三种方式;又因为Driver的实现类中有静态方法调用了regiesterDriver()方法,所以在通过反射的方式将类加载到内存中时,会自动注册驱动,我们可以将注册驱动的过程省略,这就产生了第四种方法;在前面的方法中,我们都是直接把账号密码和URL以及驱动的名称直接写在程序中的额,这不太符合我们日常的规范,也在一定程度上增加了程序的 风险,为此我们将相关信息保存在配置文件中,在程序中通过读取配置文件的方式来获取相关的信息,这就产生了最后一种也是我们最常用的方式。

方式五的优点

  1. 将需要的数据放到配置文件中,实现了数据和代码分离,减少了耦合性。
  2. 如果需要修改配置文件信息,只需要替换文件就可以,避免了重新打包文件。
  • 17
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
### 回答1: 你好! 下面是在Java获取数据库连接的一个示例代码: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseConnection { public static void main(String[] args) { Connection conn = null; try { // 设置连接字符串 String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "username"; String password = "password"; // 加载驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 获取连接 conn = DriverManager.getConnection(url, username, password); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { // 关闭连接 try { if (conn != null && !conn.isClosed()) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 需要注意的是,在这个示例代码中使用了MySQL数据库,所以需要在程序中导入`com.mysql.jdbc.Driver`类。如果使用其他数据库,需要导入对应数据库的驱动程序类。 希望这个示例代码能帮到你! ### 回答2: 在Java获取数据库连接的代码主要涉及到使用JDBC(Java Database Connectivity)接口和相关的库。以下是一个简单的例子来说明如何获取数据库连接: 首先,你需要导入相关的包和类: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; ``` 接下来,在代码中使用`DriverManager`类来获取数据库连接: ```java public class Main { public static void main(String[] args) { // 声明数据库连接相关的信息 String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "mypassword"; // 尝试获取数据库连接 Connection conn = null; try { conn = DriverManager.getConnection(url, username, password); System.out.println("成功获取数据库连接!"); } catch (SQLException e) { System.out.println("获取数据库连接失败:" + e.getMessage()); } finally { // 关闭数据库连接 if (conn != null) { try { conn.close(); } catch (SQLException e) { System.out.println("关闭数据库连接出错:" + e.getMessage()); } } } } } ``` 以上代码中,`url`是数据库的连接字符串,指定了要连接的数据库和相关的连接参数。`username`和`password`分别是数据库的用户名和密码。 使用`DriverManager.getConnection()`方法可以根据提供的连接信息获取数据库连接。如果连接成功,则返回一个`Connection`对象,可以使用该对象执行数据库操作。如果连接失败,则会抛出`SQLException`异常。 在代码的最后,需要使用`conn.close()`方法关闭数据库连接,释放资源。 这是一个简单的示例,在实际使用中可能需要根据具体情况做一些调整和处理。同时,还要注意在使用数据库连接之后,需要正确地关闭连接,以避免资源泄露和性能问题。 ### 回答3: 在Java获取数据库连接的代码是通过使用JDBC(Java Database Connectivity)来实现的。 首先,我们需要引入java.sql包中的相应类来支持数据库连接。主要的类有:Connection、DriverManager、Driver、Statement和ResultSet。 接下来,我们需要提供数据库的连接信息,包括数据库的URL、用户名和密码。这些信息通常由数据库管理员提供。 然后,我们可以使用以下代码来获取数据库连接: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Main { public static void main(String[] args) { // 数据库连接信息 String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; Connection connection = null; try { // 注册数据库驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 获取数据库连接 connection = DriverManager.getConnection(url, username, password); // 进行数据库操作... } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭数据库连接 try { if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 以上代码中,首先我们使用`Class.forName()`方法加载并注册数据库驱动,这里使用的是MySQL数据库的驱动。 然后,使用`DriverManager.getConnection()`方法传入数据库连接信息来获取数据库连接。 在获取数据库连接后,我们可以进行后续的数据库操作,比如执行SQL语句、查询数据等等。 最后,使用`connection.close()`方法关闭数据库连接,释放资源。 以上就是获取数据库连接Java代码。通过这段代码,我们可以方便地在Java程序中与数据库进行交互和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值