获取数据库连接的五种方式
package com.qf.JDBC.four; import org.testng.annotations.Test; import java.io.InputStream; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class test { //第一种方式 @Test public void test1 () throws SQLException{ //加载驱动 Driver driver1=new com.mysql.jdbc.Driver(); //提供要连接的数据库 String url1="jdbc:mysql://localhost:3306/companydb"; //将用户名和密码封装在Properties中 Properties info1 =new Properties(); info1.setProperty("user","root"); info1.setProperty("password","1234"); //4.获取连接 Connection connection1=driver1.connect(url1,info1); System.out.println(connection1); } //方式二:对方式一的迭代:在如下的程序中不出现第三方的api,使得程序具有更好的可移植性。 @Test public void test2() throws Exception { //1.获取Driver实现类对象:使用反射 Class clazz2 = Class.forName("com.mysql.jdbc.Driver"); Driver driver2 = (Driver) clazz2.newInstance(); //2.提供要连接的数据库 String url = "jdbc:mysql://localhost:3306/companydb"; //3.提供连接需要的用户名和密码 Properties info2 = new Properties(); info2.setProperty("user", "root"); info2.setProperty("password", "1234"); //4.获取连接 Connection connection2 = driver2.connect(url, info2); System.out.println(connection2); } //方式三:使用DriverManager替换Driver @Test public void test3 () throws Exception { //1.获取Driver的实现类对象 Class clazz3 = Class.forName("com.mysql.jdbc.Driver"); Driver driver3 = (Driver) clazz3.newInstance(); //2.提供另外三个连接的基本信息 String url3 = "jdbc:mysql://localhost:3306/companydb"; String user3 = "root"; String password3 = "1234"; //3.注册驱动 DriverManager.registerDriver(driver3); //4.获取连接 Connection connection3 = DriverManager.getConnection(url3, user3, password3); System.out.println(connection3); } //方式四:可以只是加载驱动,不用显示的注册驱动过了 @Test public void test4 () throws Exception { //1.提供另外三个连接的基本信息 String url4= "jdbc:mysql://localhost:3306/companydb"; String user4= "root"; String password4 = "1234"; //2.加载驱动 /* Class clazz4 =*/ Class.forName("com.mysql.jdbc.Driver");//com.mysql.jdbc.Driver就直接加载驱动了 /* static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException var1) { throw new RuntimeException("Can't register driver!"); } }静态代码块,随着类的加载而执行 */ // Driver driver4 = (Driver) clazz4.newInstance(); // // //3.注册驱动 // DriverManager.registerDriver(driver4); //4.获取连接 Connection connection4 = DriverManager.getConnection(url4, user4, password4); System.out.println(connection4); } //方式五(final):将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的 方式,获取连接 //好处:1.实现了代码与数据的分离,实现了解耦 //2.如果需要修改配置文件,可以避免程序重新打包 @Test public void test5() throws Exception { //1.读取配置文件中的4个基本信息 InputStream is = test.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties pros = new Properties(); pros.load(is); String user = pros.getProperty("user"); String password = pros.getProperty("password"); String url = pros.getProperty("url"); String driverClass = pros.getProperty("driverClass"); //2.加载驱动 Class.forName(driverClass); //3.获取连接 Connection conn = DriverManager.getConnection(url,user,password); System.out.println(conn); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)