Java JDBC 编程指北
发布日期:2021-05-08 06:29:53 浏览次数:16 分类:精选文章

本文共 2069 字,大约阅读时间需要 6 分钟。

重新优化后的文章内容

前言

在我们日常使用的 APP 或网站中,往往需要存取数据,比如在微信中,需要存储我们的用户名、手机号、用户密码…… 等一系列信息。依靠之前所学习的 Java 相关知识已经无法满足这一需求。现在的应用程序中最基本、应用最广的也就是关系型数据库,如 MySQL。Java 语言中为了实现与关系型数据库的通信,制定了标准的访问接口,即 JDBC(Java Database Connectivity)。本文主要介绍在 Java 中使用 JDBC 的相关知识,主要内容如下:

JDBC 简介

JDBC(Java Database Connectivity),即 Java 数据库连接。是 Java 语言中用于规范客户端程序如何来访问数据库的应用程序接口,它是面向关系型数据库的,提供了查询和更新数据库中数据的方法。本文以 MySQL 来演示如何使用 JDBC,所以需要事先在你的机器上准备好 MySQL,而且最好是懂一些 MySQL 的使用。

数据的增删改查

当我们初始化并建立 JDBC 连接之后,我们就可以对数据库进行 CRUD (增加、查询、更新、删除)等操作。在正式开始 CRUD 前,我们最好先了解下 MySQL 中的数据类型在 Java 中所对应的数据类型,以便后续操作数据。一般来讲,两者中的数据类型对应关系如下表所示:

SQL 中的数据类型 对应的 Java 数据类型
BIT、BOOL boolean
INTEGER、BIGINT int、long
REAL、FLOAT、DOUBLE float、double
CHAR、VARCHAR String
DECIMAL BigDecimal
DATE、TIME、LOCALDATE java.sql.Date、LocalDate
TIME、LOCALTIME java.sql.Time、LocalTime

此外,为了避免 SQL 注入问题,我们优先采用 PreparedStatement 而非 Statement。

查询数据

查询操作的步骤如下:

  • 创建 Connection 对象。
  • 创建 PreparedStatement 对象并传入 SQL 语句。
  • 执行 executeQuery 方法,获取 ResultSet。
  • 通过 ResultSet 对象读取查询结果。
  • 需要注意的点:

    • 如果不使用 try-with-resources,记得手动关闭 Statement 和 Connection。
    • ResultSet 的索引从 1 开始。

    增加数据

    新增数据的步骤如下:

  • 创建 Connection 对象。
  • 创建 PreparedStatement 对象并传入插入语句。
  • 依次设置占位符的值。
  • 执行 executeUpdate 方法。
  • 如果需要获取自增主键,可以在 prepareStatement 时指定 RETURN_GENERATED_KEYS,然后通过 getGeneratedKeys 获取。
  • 删除数据

    删除数据的步骤如下:

  • 创建 Connection 对象。
  • 创建 PreparedStatement 对象并传入删除语句。
  • 依次设置 WHERE 条件的值。
  • 执行 executeUpdate 方法。
  • 修改数据

    修改数据的步骤如下:

  • 创建 Connection 对象。
  • 创建 PreparedStatement 对象并传入更新语句。
  • 依次设置更新的列的值。
  • 执行 executeUpdate 方法。
  • 事务

    事务是数据库操作的核心概念,满足 ACID 的四个特性:原子性、一致性、隔离性和持久性。事务可以防止数据不一致和并发问题。

    隔离级别

    SQL 标准定义了 4 个隔离级别,从低到高分别是:

  • READ-UNCOMMITTED
  • READ-COMMITTED
  • REPEATABLE-READ
  • SERIALIZABLE
  • 隔离级别与脏读、幻读的关系如下:

    隔离级别 脏读 不可重复读 幻读
    READ-UNCOMMITTED
    READ-COMMITTED
    REPEATABLE-READ
    SERIALIZABLE

    事务操作

  • 使用 connection.setAutoCommit(false) 手动控制事务提交。
  • 在事务失败时,调用 connection.rollback() 回滚事务。
  • 连接池

    连接池用于管理数据库连接,避免重复创建和关闭连接,提高应用性能。常用的连接池工具有 C3P0 和 Druid。

    C3P0

  • 导入 C3P0 的 jar 包。
  • 创建 C3P0 数据源配置文件。
  • 初始化连接池对象并获取连接。
  • Druid

  • 导入 Druid 的 jar 包。
  • 创建 Druid 数据源配置文件。
  • 初始化 Druid 数据源并获取连接。
  • 总结

    今天的学习内容到此结束。关于文中有错或遗漏的地方,还烦请各位大佬在评论区指出来。我是村雨遥,一个技术栈主要为 Java 的菜鸟程序员,关注我,一起学习成长吧!

    上一篇:【Java 从入坑到放弃】No 6. 数组操作的奇技淫巧
    下一篇:还在花冤枉钱找人做电子签名?看这儿,教你制作纯手写电子签名

    发表评论

    最新留言

    关注你微信了!
    [***.104.42.241]2025年03月22日 02时59分38秒