提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

JDBC:获取数据库连接的5种方式


获取数据库连接前,我们需要做一些前期准备:

  • 在项目工程中导入数据库连接相关数据库驱动(也就是第三方api)。这里我使用的是mysql数据库。数据库驱动包请手动获取:链接:https://pan.baidu.com/s/1JMWJQD5R4oWzUchOtkjpGQ
    提取码:ye59

注意:

  • 数据库驱动未导入则程序无法运行;
  • 前四种在实际项目开发中不太建议使用,最终落地使用第五种方式,每一种连接方式都由前一种优化而来,仅供参考学习;

方式一:

 //1、获取Driver实现类对象,其中com.mysql.jdbc.Driver()
 //来自于第三方的api
Driver driver = new com.mysql.jdbc.Driver();
 //2、提供要连接的数据库
String url = "jdbc:mysql://localhost:3306/test"
 /*
 url = "jdbc:mysql://localhost:3306/test" 的理解
 1、jdbc:mysql是协议,jdbc是主协议,mysql是子协议
 2、localhost:ip地址,这里指本机
 3、3306:mysql服务器端口号
 4、test:数据库名,如果项目中所用的表是在其他数据库,则要修改该数据库名
 */
 
 //3、properties对象用于封装数据库的user和password
 Properties pro = new Properties();
 pro.setProperty("user","数据库用户名");
 pro.setProperty("password","数据库密码");
 //4、进行连接
 Connection conn = driver.connect(url,pro);
return conn;

对于
pro.setProperty(“user”,“数据库用户名”);
pro.setProperty(“password”,“数据库密码”);
中的数据库用户名和数据库密码的解释:
在这里插入图片描述

方式二:对方式一的优化(代码中不出现第三方api,移植性更好

 //1、通过反射,获取Driver实现类对象
 class aclass = Class.forName("com.mysql.jdbc.Driver");
 Driver driver = (Driver)aclass.newInstance();
 //下面的步骤和方式一一样
 //2、提供要连接的数据库
 String url = "jdbc:mysql://localhost:3306/test"
 //3、properties对象用于封装数据库的user和password
 Properties pro = new Properties();
 pro.setProperty("user","数据库用户名");
 pro.setProperty("password","数据库密码");
 //4、进行连接
 Connection conn = driver.connect(url,pro);
return conn;

方式三:对方式二的优化(使用DriverManager替换Driver)-

java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。

  • 在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。
    • Oracle的驱动:oracle.jdbc.driver.OracleDriver
    • mySql的驱动: com.mysql.jdbc.Driver
//1、获取Driver实现类的对象
Class aClass = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver) aClass.newInstance();
//2、注册(加载)数据库驱动
DriverManager.registerDriver(driver);
//3、提供获取数据库连接的三个要素:url、user、password
//获取url(指明连接的数据库
String url = "jdbc:mysql://localhost:3306/test";
//数据库用户名
String user = "xxxx";//若是连接的是本机数据库,则为root
//数据库密码
String password = "xxxx"
//4、获取连接
Connection conn = DriverManager.getConnection(url, user, password);
return conn;

方式四:对方式三的优化

//1、提供获取连接的三个要素
String url = "jdbc:mysql://localhost:3306/test";
String user = "数据库用户名";
String password = "数据库密码";
//2、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3、获取连接
Connection conn= DriverManager.getConnection(url, user, password);

return conn;

方式五(final版):

数据库连接需要的四个基本信息(user、password、url和加载驱动需要的信息)声明在配置文件jdbc.Properties中,通过读取配置文件的方式,获取连接

配置文件jdbc.Properties:
在这里插入图片描述
在这里插入图片描述
jdbc.Properties中的内容:

user=数据库用户名
password=数据库密码
url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
driverClass=com.mysql.jdbc.Driver

获取连接的主代码:

 //加载jdbc.Properties文件,存进对应的流对象里
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.Properties");
//new一个Properties对象
Properties pro = new Properties();
//加载is流文件进对应的Properties对象pro中
pro.load(is);

//通过pro获取jdbc.Properties中的ket-value
String user = pro.getProperty("user");
String password = pro.getProperty("password");
String driverClass = pro.getProperty("driverClass");
String url = pro.getProperty("url");

//加载驱动
Class.forName(driverClass);
//获取连接
Connection conn = DriverManager.getConnection(url, user, password);
return conn;

第五种方式和前面几种方式比较,好处在于:
1、使用配置文件将获取数据库连接的要素(用户名、密码、url、数据库驱动)封装起来,避免了在程序中使用硬编码的方式将代码写死。这样,若是我们使用的数据库用户名或者密码修改了,或者是使用了其他数据库,不需要修改程序的代码,只需要将配置文件中对应的内容进行修改即可。这样就实现了代码的解耦。
2、如果需要修改配置文件信息,可以避免程序重新打包。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐