【JDBC】获取数据库连接
1.获取数据库连接的要素
要素一:加载并注册驱动
要素二:URL
要素三:用户名和密码
要素一:加载并注册驱动
(1)导入mysql-connector-java的jar包
(2)加载驱动
调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名,com.mysql.jdbc.Driver
是驱动类名
(3)注册驱动
DriverManager类是管理驱动程序的类,通常Driver类中的静态代码块会调用这个注册方法,因此不需要显式调用
Driver类中的静态代码块
注:新版的mysql驱动类名为com.mysql.cj.jdbc.Driver
要素二:URL
用来标识一个注册过的驱动程序和定位数据库信息,DriverManager类通过这个URL找到正确的驱动程序
常见的URL jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
要素三:用户名和密码
用于连接数据库
调用 DriverManager 类的 getConnection() 方法获取到数据库的连接
2.连接到数据库
方式一:使用Driver接口实现类中的connect()方法
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库
厂商提供不同的实现。
显式出现了第三方数据库的API
import com.mysql.cj.jdbc.Driver;
@Test public void test1() { try { //1.java.sql.Driver接口实现类的对象 Driver driver = null; driver = new com.mysql.cj.jdbc.Driver(); //2.url String url = "jdbc:mysql://localhost:3306/test"; //3.用户名和密码 Properties info = new Properties(); info.setProperty("user", "root"); info.setProperty("password", "123456"); //4.获取连接 Connection connect = driver.connect(url, info); System.out.println(connect); } catch (SQLException e) { e.printStackTrace(); } }
方式二:通过反射实例化driver
不在代码中体现第三方数据库的API。
@Test public void test2(){ try { //反射方式实例化driver Class clazz = Class.forName("com.mysql.cj.jdbc.Driver"); Driver driver = (Driver)clazz.newInstance(); String url = "jdbc:mysql://localhost:3306/test"; Properties info = new Properties(); info.setProperty("user","root"); info.setProperty("password","123456"); Connection connect = driver.connect(url, info); System.out.println(connect); }catch (Exception e){ e.printStackTrace(); } }
方式三:使用DriverManager注册驱动获取连接
@Test public void test3(){ try { //1.四个要素 String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; String driverName = "com.mysql.cj.jdbc.Driver"; //2.实例化Driver Class clazz = Class.forName(driverName); Driver driver = (Driver)clazz.newInstance(); //3.注册驱动 DriverManager.registerDriver(driver); //4.获取连接 Connection connect = DriverManager.getConnection(url, user, password); System.out.println(connect); }catch (Exception e){ e.printStackTrace(); } }
方式四:不用显示注册驱动
@Test public void test4(){ try { //1.四个要素 String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; String driverName = "com.mysql.cj.jdbc.Driver"; //2.加载和注册驱动(com.mysql.cj.jdbc.Driver类中的静态代码块有实例化注册了) Class.forName(driverName); //3.获取连接 Connection connect = DriverManager.getConnection(url, user, password); System.out.println(connect); }catch (Exception e){ e.printStackTrace(); } }
方式五:使用配置文件保存要素
配置文件jdbc.properties写在src目录下
user = root password = 123456 url = jdbc:mysql://localhost:3306/test driverClass = com.mysql.cj.jdbc.Driver
使用配置文件的方式,数据和代码分离,修改配置文件不需要重新编译
@Test public void test5() throws Exception{ //1.加载配置文件 InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties pros = new Properties(); pros.load(is); //2.读取配置信息 String user = pros.getProperty("user"); String password = pros.getProperty("password"); String url = pros.getProperty("url"); String driverClass = pros.getProperty("driverClass"); //3.加载驱动 Class.forName(driverClass); //4.获取连接 Connection connect = DriverManager.getConnection(url, user, password); System.out.println(connect); }
分类:
Java / JDBC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本