一文带你快速学会JDBC及获取连接的五种方式
JDBC(java database connectivity)是Java语言操作数据库的标准API。在Java应用程序中,我们必须通过JDBC API来获取数据库连接,进而执行SQL语句。
本文将介绍JDBC的基础知识及使用方法,并详细讲述获取连接的五种方式。
JDBC基础知识
- JDBC 架构
JDBC API是一组类和接口所组成的包,其主要实现分为两以下两部分:
- JDBC 驱动程序:该实现部分包含JDBC API的类和接口,以及与特定数据库服务器交互的类。
-
JDBC管理者:使用JDBC API编写应用程序时,必须使用JDBC管理者指定要使用的驱动程序。
-
JDBC 基本使用
JDBC提供了一个java.sql
包,其中的一些常用类和接口包括:
- DriverManager :DriverManager是JDBC的管理者,负责加载数据库驱动程序、建立数据库连接、控制JDBC驱动程序并处理SQL异常。
- Connection :连接对象代表应用程序与数据库的连接。
- Statement :用于向数据库发送SQL查询及更新命令。
- ResultSet :代表SQL查询返回的结果集。
连接数据库的一般步骤如下:
- 加载数据库驱动程序。
- 定义数据库连接URL字符串。
- 建立数据库连接。
- 使用Statement对象执行SQL查询并获得ResultSet结果集。
- 遍历ResultSet结果集获取查询结果。
- 关闭ResultSet结果集、Statement对象和数据库连接。
基本示例代码:
import java.sql.*;
public class JdbcDemo {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/test";
static final String USER = "root";
static final String PASS = "root";
public static void main(String[] args) throws SQLException {
Connection conn = null;
Statement stmt = null;
try{
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
stmt = conn.createStatement();
String sql;
sql = "select id, name, age from student";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.print("ID: " + id);
System.out.print(", Name: " + name);
System.out.print(", Age: " + age);
System.out.println();
}
rs.close();
stmt.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
}
获取连接的五种方式
- 使用DriverManager获取连接
DriverManager是JDBC的管理者,是JDBC连接的最常见方式。该方式需要传入包含数据库地址、用户名和密码信息的Database URL,和数据库驱动的完整类名称。
// 加载数据库驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 定义数据库连接URL
String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
// 建立连接
Connection conn = DriverManager.getConnection(url, "root", "password");
- 使用DataSource获取连接
DataSource是JDBC 2.0 新增的标准接口,通过向数据源请求连接可获得一个Connection对象。该方式需要传入可用于获取连接的数据源对象。
// 创建 BasicDataSource
BasicDataSource dataSource = new BasicDataSource();
// 设置 JDBC 驱动
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
// 设置 URL
dataSource.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false");
// 设置用户名及密码
dataSource.setUsername("root");
dataSource.setPassword("password");
// 获取连接
Connection conn = dataSource.getConnection();
- 使用JNDI获取连接
Java命名和目录接口(JNDI)是Java Enterprise Edition的标准API之一,用于管理对象和资源。使用JNDI获取连接,需要将数据库连接存储在JNDI命名服务中,Java应用程序从JNDI命名服务获取连接。
// 初始化Context对象
InitialContext ic = new InitialContext();
// 通过JNDI名称获取DataSource对象
DataSource dataSource = (DataSource) ic.lookup("java:/comp/env/jdbc/mydbds");
// 获取连接
Connection conn = dataSource.getConnection();
- 使用JDBC 4.0自动加载驱动
JDBC 4.0(Java SE 6.0)新功能自动加载驱动程序,可以自动加载符合SPI “Service Provider Interface”规范的驱动程序。
// 定义database URL
String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8";
// 使用DriverManager获取连接
Connection conn = DriverManager.getConnection(url, "root", "password");
- 使用ConnectionPool获取连接
使用ConnectionPool可以实现数据库连接的复用。在多线程情况下,该方式可以更有效率地处理数据库连接请求。
常见的开源连接池有:c3p0、DBCP2和HikariCP等。
//创建HikariConfig
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/test");
config.setUsername("root");
config.setPassword("password");
//创建DataSource
DataSource ds = new HikariDataSource(config);
//获取连接
Connection conn = ds.getConnection();
完整的示例代码可以参考:连接 MySQL 数据库示例
结语
本文详细讲解JDBC的基础知识及使用方式,并介绍了五种获取连接的方式。不同方式的优劣要根据各自的特点来评估,在应用过程中需要根据实际情况选择合适的方式来获取连接。
关注我的Github,和我一起学习吧!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文带你快速学会JDBC及获取连接的五种方式 - Python技术站