当前位置: 首页 > article >正文

JDBC 入门教程

Java Database Connectivity (JDBC) 是 Java 平台提供的一种与各种数据库连接的方式和规范。通过 JDBC,开发者可以在 Java 平台上完成数据库的查询、更新和操作。本文将详细认识 JDBC 的基础概念,并通过实战例子介绍其使用方法。


1. JDBC 概念

JDBC 接口是 Java 提供的一种 API,用于与数据库进行交互,其核心涉及以下三个概念:

  1. 数据源连接:通过 JDBC 与数据库建立一个连接。

  2. 进行 SQL 操作:执行 SQL 语句,如查询、插入、删除和更新。

  3. 结果处理:将 SQL 操作的结果返回给用户,如表中的数据。

JDBC 接口使用一种默认的驱动模式,通过实现各种数据库驱动。通过 JDBC,开发者可以完成对多种数据库的泛通操作。


2. JDBC 基础构件

2.1 DriverManager

DriverManager 是 JDBC 连接管理器,用于泛通管理所有驱动程序和数据库连接。

其主要函数有:

  • getConnection(String url):返回一个 Connection 对象。

  • registerDriver(Driver driver):注册一个 JDBC 驱动。

2.2 Connection

Connection 是与特定数据库保持连接的对象,提供了远程数据操作的机制。

重要方法有:

  • createStatement():创建一个 Statement 对象,用于 SQL 操作。

  • prepareStatement(String sql):创建预处理声明对象。

  • setAutoCommit(boolean autoCommit):设置是否自动提交。

  • commit():提交一个事务。

2.3 Statement

Statement 是 JDBC 中用于执行 SQL 语句的接口,有三种为主要实现:

  1. Statement:适合基本 SQL 执行,但存在泛复汇缩问题。

  2. PreparedStatement:预处理声明,可以防止 SQL 泛洞,适合反复操作。

  3. CallableStatement:用于调用数据库中的储存过程和函数。

2.4 ResultSet

ResultSet 是用于存储查询结果的对象,提供了对资料进行位置和取值的方法。

举例:

ResultSet rs = statement.executeQuery("SELECT * FROM students");
while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println("ID: " + id + ", Name: " + name);
}

3. JDBC 实战

以一个基本数据库操作为例,完成以下流程:

3.1 添加文件依赖

在 Maven 项目中,依赖其 MySQL Connector:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

3.2 配置数据库参数

application.properties中配置:

jdbc.url=jdbc:mysql://localhost:3306/school
jdbc.username=root
jdbc.password=root

3.3 Java 实现

3.3.1 创建连接
import java.sql.*;

public class JDBCExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/school";
        String username = "root";
        String password = "root";

        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            System.out.println("连接成功!");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
3.3.2 查询数据

http://www.kler.cn/a/446381.html

相关文章:

  • Linux下部署MySQL8.0集群 - 主从复制(一主两从)
  • Layui table不使用url属性结合laypage组件实现动态分页
  • 嵌入式硬件面试题
  • 智能工厂的设计软件 三种处理单元(NPU/GPU/CPU)及其在深度学习框架中的作用 之5(腾讯云AI代码助手 之3)
  • android recycleview 中倒计时数据错乱
  • Redis的主从集群以及哨兵机制学习总结
  • Ubuntu 上传项目到 GitHub
  • linux springboot项目启动端口被占用 Port 8901 was already in use.
  • Flink调优----资源配置调优与状态及Checkpoint调优
  • 【文档搜索引擎】使用多线程优化流程
  • React系列(八)——React进阶知识点拓展
  • ES6学习函数(四)
  • Autosar入门_架构(Architecture)
  • docker常用配置
  • datasets 笔记: 文本数据集的预处理(Tokenization)
  • 【libuv】Fargo信令2:【深入】client为什么收不到服务端响应的ack消息
  • CCF-GESP 等级考试 2024年12月认证C++七级真题解析
  • 解决git clone时报错“authentication failed for huggingface repository”
  • Web应用中的CSRF防护机制
  • 【专升本】倒计时99天
  • Spring Security 6 系列之三 - Filter过滤器
  • Xcode 16 编译弹窗问题、编译通过无法,编译通过打包等问题汇总
  • 四大跨平台开发框架深度解析——uniapp、uniapp-X、React Native与Flutter
  • 服务器被入侵登录不上怎么办?
  • 0基础学前端-----CSS DAY9
  • 【JavaEE进阶】第一个Spring Boot程序