Java DataBase Connectivity是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口,一种可用于执行SQL语句的JavaAPI。本文主要介绍了JDBC的概念及获取数据库连接的5种方式,需要的可以参考一下
一、JDBC概念
Java DataBase Connectivity(Java数据库连接技术) 它是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口(API-它是一种可用于执行SQL语句的JavaAPI,即由一组用Java语言编写的类与接口所组成)
JDBC的设计目的:
它是一种规范,设计出来的主要目的是为了让各个数据库开发商为Java程序员提供标准的数据访问类和接口,使得独立于DBMS的Java应用程序的开发成为可能(数据库改变,驱动程序跟着改变,但是应用程序不变) Java设计规范接口,各大数据库产商遵守规范实现,Java程序员不需要考虑实现细节,只需要调用API即可
JDBC工作的基本流程:
一个基本的JDBC工作流程,分为以下几步:
1、加载特定数据库驱动器实现类,并注册驱动器(Driver会注册到DriverManager中)
2、根据特定的URL,返回可以接受此URL的数据库驱动对象Driver
3、使用数据库驱动 Driver 创建数据库连接Connection会话
4、使用 Connection对象创建 用于操作sql的Statement对象
5、statement对象 .执行 sql语句,返回结果ResultSet 对象
6、处理ResultSet中的结果
7、关闭连接,释放资源
二、JDBC获取数据库连接的5种方式
方式一
public class ConnectionTest {
@Test
public void testConnection1() throws SQLException {
//获取Driver实现类对象
Driver driver = new com.mysql.jdbc.Driver();
//jdbc:mysql: 协议
//localhost ip地址
//3306 MySQL数据库默认端口号
//test 需要连接的数据库名称
String url = "jdbc:mysql://localhost:3306/test";
Properties info = new Properties();
//设置连接的用户名和名称,user和password是固定的写法
info.setProperty("user","root");
info.setProperty("passwor","root");
Connection connect = driver.connect(url, info);
System.out.println(connect);
}
}
方式二
public class ConnectionTest {
@Test
public void testConnection2() throws Exception {
//1.使用反射获取Driver实现类对象
Class<?> clazz = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
//2.提供需要连接的数据库
String url = "jdbc:mysql://localhost:3306/test";
//3.提供连接需要的用户和密码
Properties info = new Properties();
info.setProperty("user","root");
info.setProperty("password","lxq");
//获取链接
Connection connect = driver.connect(url, info);
System.out.println(connect);
}
}
方式二是方式一的迭代,与方式一相比没有出现第三方的API,有较好的移植性
方式三
public class ConnectionTest {
@Test
public void testConnection3() throws Exception {
//1.使用反射获取Driver实现类对象
Class<?> clazz = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
//2.提供需要连接的数据库
String url = "jdbc:mysql://localhost:3306/test";
//3.提供连接需要的用户和密码
String user = "root";
String passwor = "root";
//4.注册驱动
DriverManager.registerDriver(driver);
//5.获取连接
Connection connection = DriverManager.getConnection(url, user, passwor);
System.out.println(connection);
}
}
使用DriverManager(驱动管理器)替换Driver,DriverManager是jdk提供的一个类,用来完成获取连接的操作
方式四
public class ConnectionTest {
@Test
public void testConnection4() throws Exception {
//1.提供连接所需信息
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passwor = "root";
//2.使用反射加载驱动
Class.forName("com.mysql.jdbc.Driver");
//3.获取连接
Connection connection = DriverManager.getConnection(url, user, passwor);
System.out.println(connection);
}
}
与方式三相比,方式四省略了如下代码:
Driver driver = (Driver) clazz.newInstance();
DriverManager.registerDriver(driver);
理由是,在com.mysql.jdbc.Driver类中有如下所示的静态代码块,使用Class.forName()加载这个驱动时就会执行这个静态代码块,实现了注册驱动
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
方式五
public class ConnectionTest {
@Test
public void testConnection5() throws Exception {
//1.获取连接所需信息
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties info = new Properties();
info.load(is);
String url = info.getProperty("url");
String user = info.getProperty("user");
String password = info.getProperty("passwor");
String driverClass = info.getProperty("driverClass");
//2.使用反射加载驱动
Class.forName(driverClass);
//5.获取连接
Connection connection = DriverManager.getConnection(url, user, passwor);
System.out.println(connection);
}
}
其中配置文件jdbc.properties在src目录下:
url=jdbc:mysql://localhost:3306/test
user=root
passwor=root;
driverClass=com.mysql.jdbc.Driver
使用配置文件的好处:
1、实现代码和数据的分离,如果需要修改配置信息,直接在配置文件中进行修改,不需要深入代码
2、如果修改配置信息,省去了重新编译的过程=
到此这篇关于详解JDBC的概念及获取数据库连接的5种方式的文章就介绍到这了,更多相关JDBC数据库连接内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:详解JDBC的概念及获取数据库连接的5种方式
基础教程推荐
- springboot自定义starter方法及注解实例 2023-03-31
- Java并发编程进阶之线程控制篇 2023-03-07
- java基础知识之FileInputStream流的使用 2023-08-11
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- java实现多人聊天系统 2023-05-19
- Java实现查找文件和替换文件内容 2023-04-06
- Java数据结构之对象比较详解 2023-03-07
- Java实现线程插队的示例代码 2022-09-03
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java文件管理操作的知识点整理 2023-05-19