编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

JDBC、JDBC Driver、Java访问数据库

wxchong 2024-11-10 12:15:15 开源技术 30 ℃ 0 评论

JDBC

JDBC(Java Database Connectivity)是 Java 提供的一种标准的关系型数据库访问方式,提供了数据库操作的接口API。Java 程序可以通过API完成连接数据库、执行 SQL 查询、更新和存储过程等操作。源码在JDK的java.sql包下。

JDBC主要组件包括:

  • DriverManager: 用于获取数据库连接的基本类,负责管理一组数据库驱动程序。
  • Connection: 表示与数据库的连接,通过它可以创建 Statement 和 PreparedStatement 对象。
  • Statement: 用于执行静态 SQL 语句并返回它所生成结果的对象。
  • PreparedStatement: 继承自 Statement,用于执行预编译的 SQL 语句,可以提高性能并防止 SQL 注入攻击。
  • ResultSet: 表示数据库结果集的数据表,通常通过执行查询获取,并用于检索和遍历结果集中的数据。

JDBC Driver

JDBC 提供了的API是标准的、平台无关, Java 应用程序通过这些API即可完成与不同的关系型数据库进行交互,例如 MySQL、PostgreSQL、Oracle 等。但是,通过接口并不能直接完成数据库访问,因为缺乏底层的实现支持。

需要实际完成对数据库的操作,还需要引入具体的数据库类型的驱动程序,JDBC 驱动程序实现了 JDBC API 中定义的接口和功能,将 JDBC API 中的方法调用转换为特定数据库的通信协议,从而实现与数据库的连接和数据交换。

每种数据库都有自己的 JDBC 驱动程序(Driver),用于实现 JDBC API 并与特定数据库进行通信。常见的数据库与其Driver如下:

MySQL

  • MySQL Connector/J(官方提供的 JDBC 驱动程序)

Oracle Database

  • Oracle JDBC Driver(官方提供的 JDBC 驱动程序)

Microsoft SQL Server

  • Microsoft JDBC Driver for SQL Server

PostgreSQL

  • PostgreSQL JDBC Driver

SQLite

  • SQLite JDBC Driver(Xerial SQLite JDBC)

IBM Db2

  • IBM Data Server Driver for JDBC and SQLJ

H2 Database

  • H2 JDBC Driver

Derby Database(Apache Derby)

  • Derby JDBC Driver

使用

public class DatabaseConnect {

    public static void main(String[] args) {
        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "123456";
        try {
            // 加载并注册MySQL驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立数据库连接
            Connection connection = DriverManager.getConnection(url, user, password);
            // 创建Statement对象
            Statement statement = connection.createStatement();
            // 执行SQL查询
            String sql = "SELECT * FROM li_admin_user";
            ResultSet resultSet = statement.executeQuery(sql);
            // 处理查询结果
            while (resultSet.next()) {
                // 获取每一行数据的字段值
                long id = resultSet.getLong("id");
                String name = resultSet.getString("nick_name");
                // 其他字段类似地获取
                System.out.println("ID: " + id + ", Name: " + name);
            }
            // 关闭连接
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表