您的位置:

JDBC入门指南

一、JDBC概述

JDBC(Java Database Connectivity)即Java数据库连接,是Java语言中的一套数据库访问API,可以让Java应用程序通过SQL语句操作数据库,如查询、插入、删除、更新等操作。JDBC的作用是将Java代码和数据库进行交互连接,实现数据的增删改查,方便编程人员对数据进行操作。

JDBC是一个标准的API,该API定义了一系列的Java类和接口,可以被用来访问和管理不同类型的数据库,如MySQL、Oracle、SQL Server等。

下面是一个最简单的JDBC程序示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JDBCTest {
    public static void main(String[] args) throws SQLException {
        //1. 加载数据库驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2. 建立数据库连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","password");
        //3. 创建Statement对象
        Statement stmt = conn.createStatement();
        //4. 执行查询语句
        ResultSet rs = stmt.executeQuery("select * from test_table");
        //5. 处理结果集
        while(rs.next()){
            System.out.println(rs.getString("name"));
        }
        //6. 关闭连接
        rs.close();
        stmt.close();
        conn.close();
    }
}

二、JDBC连接数据库步骤及常用API

与大部分的Java API一样,JDBC也包含了一些常用类和接口。这些类和接口通常被用来连接数据库、发送SQL命令以及获取结果集等操作,下面是JDBC的步骤及常用API。

1. 加载数据库驱动

在使用JDBC连接数据库之前,需要先加载数据库的驱动程序,驱动程序提供了一个标准接口来连接不同的数据库。在加载驱动时,需要使用Class.forName()方法,表示当前的JVM会加载并注册驱动程序。

//加载驱动程序
Class.forName("com.mysql.jdbc.Driver");

2. 建立数据库连接

在驱动程序注册之后,需要使用DriverManager.getConnection()方法来建立数据库连接,该方法会返回一个连接对象 Connection。

//建立连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","password");

3. 创建Statement对象

在建立了数据库连接之后,需要使用Statement对象来发送SQL语句并执行查询操作。Statement对象通常由数据库连接对象创建。

//创建Statement对象
Statement stmt = conn.createStatement();

4. 执行SQL语句

创建Statement对象之后,可以使用executeQuery()executeUpdate()execute()方法来执行SQL语句,并获取查询结果。

其中,executeQuery()方法用于执行查询语句,返回一个ResultSet结果集对象;executeUpdate()方法用于执行数据库更新操作,如INSERT、UPDATE或DELETE,返回更新的行数;execute()方法可以执行任意SQL语句,但不返回查询结果。

//执行查询语句
ResultSet rs = stmt.executeQuery("select * from test_table");
//执行更新操作
int count = stmt.executeUpdate("update test_table set name = 'test' where id = 1");

5. 处理结果集

在执行了SQL查询语句并获取到了结果集之后,需要使用ResultSet对象来遍历并处理查询结果。

ResultSet对象的常用方法有:

  • next():返回一个Boolean类型值,表示是否存在更多的结果行。
  • getString():返回一个字符串类型的值,表示当前行指定列的值。
  • getInt():返回一个整数类型的值,表示当前行指定列的值。
  • 其他类型的获取方法,如getBoolean()、getDouble()等。
//遍历结果集
while(rs.next()){
    System.out.println(rs.getString("name"));
}

6. 关闭连接及释放资源

在使用完数据库连接、Statement对象、ResultSet对象之后,需要及时地将其关闭并释放资源。

//关闭资源
rs.close();
stmt.close();
conn.close();

三、JDBC事务管理

在JDBC中,事务是一个数据库操作序列,它可以被视为单个工作单元。在JDBC中,事务是由Connection对象的beginTransation()、commit()和rollback()方法支持的。

在JDBC事务中,一般采用“四大特性”(ACID)来描述事务的属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

下面是一个简单的JDBC事务管理程序示例:

import java.sql.*;

public class JDBCTransactionTest {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        //1. 加载驱动程序
        Class.forName("com.mysql.jdbc.Driver");
        //2. 建立连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","password");
        //3. 开始事务
        try{
            conn.setAutoCommit(false);  //将自动提交设置为 false
            Statement stmt = conn.createStatement();
            //执行操作
            stmt.executeUpdate("update account set balance = balance - 500 where name = 'A'");
            stmt.executeUpdate("update account set balance = balance + 500 where name = 'B'");
            //手动提交事务
            conn.commit();
            stmt.close();
        }catch(SQLException e){
            //回滚事务
            conn.rollback();
        }finally{
            conn.close();
        }
    }
}

四、JDBC连接池

JDBC连接池(Connection Pool),是指在应用程序启动时,预先创建一定数量的数据库连接并放入一个连接池中,当应用程序需要连接数据库时,直接从连接池中取出连接,使用完毕后再将连接放回连接池中。这样可以降低每次连接数据库的时间成本,提高应用程序的性能。

JDBC连接池最为常见的实现方式是使用Apache Commons DBCP(DataBase Connection Pool)组件,该组件可以将连接池集成到Tomcat、WebLogic、Jboss等Web容器中。

//创建BasicDataSource对象,设置数据库连接相关参数
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("password");

//使用连接池获取数据库连接
Connection conn = dataSource.getConnection();

//释放连接到连接池
conn.close();

五、总结

JDBC是一种Java访问数据库的标准API,可以通过JDBC连接不同类型的数据库,并通过SQL语句操作数据库。在JDBC中,常用的API包括驱动程序加载、建立数据库连接、创建Statement对象、执行SQL语句并处理结果集等操作,同时,JDBC还支持事务管理和连接池技术等。使用JDBC可以更方便地实现与数据库的交互。