1.简介
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多 种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可 以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰 出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。 JDBC可以在各种平台上使用Java,如Windows,Mac OS和各种版本的UNIX。 JDBC库包括通常与数据库使用相关的下面提到的每个任务的API。 - 连接数据库。 - 创建SQL或MySQL语句。 - 在数据库中执行SQL或MySQL查询。 - 查看和修改生成的记录。
2.体系结构
JDBC API支持用于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成: - JDBC API:这提供了应用程序到JDBC管理器连接。 - JDBC驱动程序API:这支持JDBC管理器到驱动程序连接。 JDBC API使用驱动程序管理器和特定于数据库的驱动程序来提供与异构数据库的透明连接
3.核心组件
DriverManager: 此类管理数据库驱动程序列表。使用通信子协议将来自java应用程序的连接请求 与适当的数据库驱动程序匹配。
Driver:此接口处理与数据库服务器的通信,我们很少会直接与Driver对象进行交互。而是使用 DriverManager对象来管理这种类型的对象。
Connection:该界面具有用于联系数据库的所有方法。连接对象表示通信上下文,即,与数据库 的所有通信仅通过连接对象。
Statement:使用从此接口创建的对象将SQL语句提交到数据库。除了执行存储过程之外,一些派 生接口还接受参数。
ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。它作为一 个迭代器,允许我们移动其数据。
SQLException:此类处理数据库应用程序中发生的任何错误
4.使用步骤
构建JDBC应用程序涉及以下六个步骤: - 导入包:需要包含包含数据库编程所需的JDBC类的包。大多数情况下,使用import java.sql.*就足够了。
- 注册JDBC驱动程序:要求您初始化驱动程序,以便您可以打开与数据库的通信通道。
- 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。
- 从结果集中提取数据:需要使用相应的ResultSet.getXXX()方法从结果集中检索数据。
- 释放资源:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。
5.连接步骤
建立JDBC连接所涉及的编程相当简单。这是简单的四个步骤
- 导入JDBC包:将Java语言的*import*语句添加到Java代码中导入所需的类。
- 注册JDBC驱动程序:此步骤将使JVM将所需的驱动程序实现加载到内存中,以便它可以满足您的JDBC 请求。
- 数据库URL配置:这是为了创建一个格式正确的地址,指向要连接到的数据库。
- 创建连接对象:最后,调用DriverManager对象的getConnection()方法来建立实际的数据库连 接。
Class.forName(); 注册驱动程序最常见的方法是使用Java的Class.forName()方法,将驱动程序的类文件动态加载到内存 中,并将其自动注册
DriverManager.registerDriver() 第二种方法是使用静态DriverManager.registerDriver()方法。
数据库URL配置 加载驱动程序后,可以使用DriverManager.getConnection()方法建立连接。为了方便参考,让我 列出三个重载的DriverManager.getConnection()方法 -
- getConnection(String url)
- getConnection(String url,Properties prop)
- getConnection(String url,String user,String password)
创建数据库连接对象
String URL = "jdbc:mysql://localhost:3306/yhp2?serverTimezone=UTC";
String USER = "username"; String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);
使用数据库URL和属性对象 DriverManager.getConnection()方法的第三种形式需要一个数据库URL和一个Properties对象 -
DriverManager.getConnection(String url, Properties info);
关闭数据库连接 为确保连接关闭,您可以在代码中提供一个“finally”块。一个finally块总是执行,不管是否发生异常。 要关闭上面打开的连接,你应该调用close()方法如下 -
conn.close();
JDBC执行SQL语句
一旦获得了连接,我们可以与数据库进行交互。JDBC Statement和PreparedStatement接口定义了使 您能够发送SQL命令并从数据库接收数据的方法和属性。
用于对数据库进行通用访问。在运行时使用静态SQL语句时很有用。Statement接口不能 接受参数。 | PreparedStatement的 | 当您计划多次使用SQL语句时使用。PreparedStatement接口在运行时接受 输入参数。
PreparedStatement(预状态通道)
该PreparedStatement的接口扩展了Statement接口,它为您提供了一个通用的Statement对象有两 个优点附加功能。
关闭PreparedStatement对象 就像关闭Statement对象一样,由于同样的原因,还应该关闭PreparedStatement对象。 一个简单的调用close()方法将执行该作业。如果先关闭Connection对象,它也会关闭 PreparedStatement对象。但是,应始终显式关闭PreparedStatement对象,以确保正确清理。
ResultSet
SELECT语句是从数据库中选择行并在结果集中查看行的标准方法。该java.sql.ResultSet中的接口表示 结果集数据库查询。 ResultSet对象维护指向结果集中当前行的游标。术语“结果集”是指包含在ResultSet对象中的行和列数 据。 如果没有指定任何ResultSet类型,您将自动获得一个TYPE_FORWARD_ONLY。
工具类的定义