📜  Java JDBC教程(1)

📅  最后修改于: 2023-12-03 15:31:31.086000             🧑  作者: Mango

Java JDBC教程

Java JDBC(Java Database Connectivity)是一种Java API,用于连接和操作数据库。本教程将向你介绍JDBC的基础知识和用法。

JDBC基础

JDBC API定义了一组Java类和接口,用于与数据库进行通信。这些类和接口由Java SE平台提供,并打包在java.sql和javax.sql包中。

JDBC架构

JDBC架构包括以下组件:

  • JDBC API - 提供了访问数据库的Java类和接口。
  • JDBC Driver API - 提供了连接到数据库的标准Java接口,不同的数据库供应商需要实现此接口。
  • JDBC Driver Manager - 负责跟踪安装的驱动程序并协调连接请求。
  • JDBC Test Suite - 用于测试JDBC驱动程序的可移植性和正确性的测试套件。
JDBC驱动程序

JDBC驱动程序是实现JDBC Driver API的代码库。JDBC驱动程序主要分为以下四种类型:

  • JDBC-ODBC桥接驱动程序 - 连接到ODBC(Open Database Connectivity)底层驱动程序。
  • 纯Java驱动程序 - 使用Java TCP / IP协议与数据库通信,无需中间层。
  • 本地API驱动程序 - 使用C / C ++库与数据库通信。
  • JDBC网络协议驱动程序 - 使用Java套接字通过网络连接到数据库。
JDBC示例

以下示例演示了如何连接到MySQL数据库:

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

public class Main {
  public static void main(String[] args) {
    try {
      // 1. 注册JDBC驱动程序
      Class.forName("com.mysql.cj.jdbc.Driver");
      
      // 2. 建立数据库连接
      String url = "jdbc:mysql://localhost:3306/mydatabase";
      String user = "root";
      String password = "mypassword";
      Connection conn = DriverManager.getConnection(url, user, password);
      
      // 3. 对数据库执行查询、更新等操作
      
      // 4. 关闭连接
      conn.close();
    } catch (ClassNotFoundException e) {
      System.out.println("JDBC驱动程序未找到。");
    } catch (SQLException e) {
      System.out.println("数据库连接失败。");
    }
  }
}
JDBC CRUD操作

CRUD是指创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。JDBC API提供了执行这些操作的方法。

插入数据

以下示例演示了如何向MySQL数据库插入数据:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Main {
  public static void main(String[] args) {
    try {
      // 1. 注册JDBC驱动程序
      Class.forName("com.mysql.cj.jdbc.Driver");
      
      // 2. 建立数据库连接
      String url = "jdbc:mysql://localhost:3306/mydatabase";
      String user = "root";
      String password = "mypassword";
      Connection conn = DriverManager.getConnection(url, user, password);
      
      // 3. 插入数据
      String sql = "INSERT INTO customers (name, email) VALUES (?, ?)";
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "John Doe");
      pstmt.setString(2, "johndoe@example.com");
      int rows = pstmt.executeUpdate();
      System.out.println(rows + " 行已插入到表中。");
      
      // 4. 关闭连接
      pstmt.close();
      conn.close();
    } catch (ClassNotFoundException e) {
      System.out.println("JDBC驱动程序未找到。");
    } catch (SQLException e) {
      System.out.println("数据库连接失败。");
    }
  }
}
查询数据

以下示例演示了如何从MySQL数据库中查询数据:

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

public class Main {
  public static void main(String[] args) {
    try {
      // 1. 注册JDBC驱动程序
      Class.forName("com.mysql.cj.jdbc.Driver");
      
      // 2. 建立数据库连接
      String url = "jdbc:mysql://localhost:3306/mydatabase";
      String user = "root";
      String password = "mypassword";
      Connection conn = DriverManager.getConnection(url, user, password);
      
      // 3. 查询数据
      String sql = "SELECT * FROM customers WHERE name LIKE ?";
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "John%");
      ResultSet rs = pstmt.executeQuery();
      while (rs.next()) {
        System.out.println(rs.getString("name") + "\t" + rs.getString("email"));
      }
      
      // 4. 关闭连接
      rs.close();
      pstmt.close();
      conn.close();
    } catch (ClassNotFoundException e) {
      System.out.println("JDBC驱动程序未找到。");
    } catch (SQLException e) {
      System.out.println("数据库连接失败。");
    }
  }
}
更新数据

以下示例演示了如何更新MySQL数据库中的数据:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Main {
  public static void main(String[] args) {
    try {
      // 1. 注册JDBC驱动程序
      Class.forName("com.mysql.cj.jdbc.Driver");
      
      // 2. 建立数据库连接
      String url = "jdbc:mysql://localhost:3306/mydatabase";
      String user = "root";
      String password = "mypassword";
      Connection conn = DriverManager.getConnection(url, user, password);
      
      // 3. 更新数据
      String sql = "UPDATE customers SET email = ? WHERE name = ?";
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "new-email@example.com");
      pstmt.setString(2, "John Doe");
      int rows = pstmt.executeUpdate();
      System.out.println(rows + " 行已更新。");
      
      // 4. 关闭连接
      pstmt.close();
      conn.close();
    } catch (ClassNotFoundException e) {
      System.out.println("JDBC驱动程序未找到。");
    } catch (SQLException e) {
      System.out.println("数据库连接失败。");
    }
  }
}
删除数据

以下示例演示了如何从MySQL数据库中删除数据:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Main {
  public static void main(String[] args) {
    try {
      // 1. 注册JDBC驱动程序
      Class.forName("com.mysql.cj.jdbc.Driver");
      
      // 2. 建立数据库连接
      String url = "jdbc:mysql://localhost:3306/mydatabase";
      String user = "root";
      String password = "mypassword";
      Connection conn = DriverManager.getConnection(url, user, password);
      
      // 3. 删除数据
      String sql = "DELETE FROM customers WHERE name = ?";
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "John Doe");
      int rows = pstmt.executeUpdate();
      System.out.println(rows + " 行已删除。");
      
      // 4. 关闭连接
      pstmt.close();
      conn.close();
    } catch (ClassNotFoundException e) {
      System.out.println("JDBC驱动程序未找到。");
    } catch (SQLException e) {
      System.out.println("数据库连接失败。");
    }
  }
}
总结

本教程介绍了JDBC的基本概念和用法,以及如何执行CRUD操作。JDBC为Java开发人员提供了连接和操作各种类型的数据库的能力。使用JDBC,可以轻松地将Java应用程序与MySQL、Oracle、PostgreSQL等数据库集成。