前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java随记 —— JDBC常用API

Java随记 —— JDBC常用API

作者头像
繁依Fanyi
发布2023-05-07 17:31:33
4160
发布2023-05-07 17:31:33
举报
文章被收录于专栏:繁依Fanyi 的专栏
在这里插入图片描述
在这里插入图片描述

1. 什么是 JDBC ?

JDBC(Java Database Connectivity,Java 数据库连接)是一套用于执行 SQL 语句的 Java API。

应用程序可通过这套 API 连接到关系型数据库,并使用 SQL 语句来完成对数据库中数据的查询、新增、更新和删除等操作。

② 不同的数据库(如 MySQL、Oracle等)在其内部处理数据的方式是不同的,因此每一个数据库厂商都提供了自己数据库的访问接口。

有了 JDBC 以后,不同厂商按照统一的规范来提供数据库驱动,在程序中由 JDBC 和具体的数据库驱动联系,这样应用程序就不必直接与底层的数据库交互,从而使代码的通用性更强。

2. JDBC 常用 API

JDBC API 主要位于 java.sql 包中,该包定义了一系列访问数据库的接口和类。

1. Driver 接口

接口介绍:

Driver 接口是所有 JDBC 驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。

② 需要注意的是,在编写 JDBC 程序时,必须要把所使用的数据库驱动程序或类库加载到项目的 classpath 中(这里指数据库的驱动 JAR 包)

2. DriverManager 类

类介绍:

DriverManager 类用于加载 JDBC 驱动程序并且创建与数据库的连接。在 DriverManager 类中,定义了两个比较重要的静态方法。

方法介绍:

static synchronization void registerDriver(Driver driver)

(1)该方法用于向 DriverManager 中注册给定的 JDBC 驱动程序。 (2) 在实际开发中,通常不使用 DriverManager.registerDriver(Driver driver) 这种方式注册驱动

static Connection getConnection(String url,String user,String pwd)

该方法用于建立和数据库的连接,并返回表示连接的 Connection 对象

3. Connection 接口

接口介绍:

Connection 接口代表 Java 程序和数据库的连接对象,只有获得该连接对象后,才能访问数据库,并操作数据表。

方法介绍:

Statement createStatement()

该方法用于返回一个向数据库发送语句的 Statement 对象

PreparedStatement prepareStatement(String sql)

该方法用于返回一个 PreparedStatement 对象,该对象用于向数据库发送参数化的 SQL 语句。

CallableStatement prepareCall (String sql)

该方法用于返回一个 CallableStatement 对象,该对象用于调用数据库中的存储过程。

4. Statement 接口

接口介绍:

Statement 是 Java 执行数据库操作的一个重要接口,它用于执行静态的 SQL 语句,并返回一个结果对象。

Statement 接口对象可以通过 Connection 实例的createStatement() 方法获得,该对象会把静态的 SQL 语句发送到数据库中编译执行,然后返回数据库的处理结果。

相关继承关系

(1)Statement 继承自 Wrapper (2)PreparedStatement 继承自 Statement (3)CallableStatement 继承自 PreparedStatement

在这里插入图片描述
在这里插入图片描述

方法介绍:

boolean execute(String sql)

用于执行各种 SQL 语句,返回一个 boolean 类型的值,如果为 true,表示所执行的 SQL 语句有查询结果,可通过 Statement 的 getResultSet() 方法获得查询结果。

int executeUpdate(String sql)

用于执行 SQL中的 insert、update 和 delete 语句,该方法返回一个 int 类型的值,表示数据库中受该 SQL 语句影响的记录条数。

ResultSet executeQuery(String sql)

用于执行 SQL 中的 select 语句,该方法返回一个表示查询结果的 ResultSet 对象。

5. PreparedStatement 接口

接口介绍:

Statement 接口封装了 JDBC 执行 SQL 语句的方法,虽然可以完成 Java 程序执行 SQL 语句的操作,但是在实际开发过程中往往需要将程序中的变量作为 SQL 语句的查询条件,而使用Statement 接口操作这些 SQL 语句会过于烦琐,并且存在安全方面的问题。

针对这一系列问题,JDBC API 中提供了扩展的 PreparedStatement 接口。 ② PreparedStatement 接口 是 Statement 的子接口,用于执行预编译的 SQL语句。

该接口扩展了带有参数 SQL 语句的执行操作,应用接口中的 SQL 语句可以使用占位符 “?” 来代替其参数,然后通过 setXxx() 方法为 SQL 语句的参数赋值。

方法介绍:

int executeUpdate()

在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 DML 语句或者是无返回内容的 SQL 语句,如 DDL 语句。

ResultSet executeQuery()

在此 PreparedStatement 对象中执行 SQL 查询,该方法返回的是 ResultSet 对象。

void setInt(int parameterIndex, int x)

将指定参数设置为给定的 int 值。

void setFloat(int parameterIndex, float x)

将指定参数设置为给定的 float 值。

void setString(int parameterIndex, String x)

将指定参数设置为给定的 String 值。

void setDate(int parameterIndex, Date X)

(1)将指定参数设置为给定的 Date 值。 (2)参数 Date 的类型必须是 java.sql.Date 而不是 java.util.Date

void addBatch()

将一组参数添加到此 PreparedStatement 对象的批处理命令中。

void setCharacterStream(int parameterIndex, java.io.Reader reader, int length)

将指定的输入流写入数据库的文本字段。

void setBinaryStream(int parameterIndex, java.io.InputStream x, int length)

将二进制的输入流数据写入到二进制字段中。

6. ResultSet 接口

接口介绍:

① ResultSet 接口用于保存 JDBC 执行查询时返回的结果集,该结果集封装在一个逻辑表格中。

② 在 ResultSet 接口内部有一个指向表格数据行的游标(或指针),ResultSet 对象初始化时,游标在表格的第一行之前,调用 next() 方法可将游标移动到下一行,如果下一行没有数据,则返回 false。

③ 在应用程序中经常使用 next() 方法作为 while 循环的条件来迭代 ResultSet 结果集。

方法介绍:

String getString(int columnIndex)

用于获取指定字段的 String 类型的值,参数 columnIndex 代表字段的索引。

String getString(String columnName)

用于获取指定字段的 String 类型的值,参数 columnName 代表字段的名称。

int getInt(int columnIndex)

用于获取指定字段的 int 类型的值,参数 columnIndex 代表字段的索引。

int getInt(String columnName)

用于获取指定字段的 int 类型的值,参数 columnName 代表字段的名称。

Date getDate(int columnIndex)

用于获取指定字段的 Date 类型的值,参数 columnIndex 代表字段的索引。

Date getDate(String columnName)

用于获取指定字段的 Date 类型的值,参数 columnName 代表字段的名称。 ⑦ boolean next()

将游标从当前位置向下移一行。

boolean absolute(int row)

将游标移动到此 ResultSet 对象的指定行。

void afterLast()

将游标移动到此 ResultSet 对象的末尾,即最后一行之后。

void beforeFirst()

将游标移动到此 ResultSet 对象的开头,即第一行之前。

boolean previous()

将游标移动到此 ResultSet 对象的上一行。

boolean last()

将游标移动到此 ResultSet 对象的最后一行。

3. JDBC 编程步骤

1. 加载数据库驱动

加载数据库驱动通常使用 Class 类的静态方法 forName() 来实现。

(1)具体实现方法: Class.forName("DriverName");

(2)DriverName 就是数据库驱动类所对应的字符串。

加载 MySQL 和 Oracle 数据库: (1) Class.forName("com.mysql.jdbc.Driver"); : MySQL 数据库的驱动加载 (2) Class.forName("oracle.jdbc.driver.OracleDriver"); :Oracle 数据库驱动加载

③ 在加载数据库驱动时所加载的并不是真正使用数据库的驱动类,而是数据库驱动类名的字符串。

2. 通过 DriverManager 获取数据库的连接

DriverManager 中提供了一个 getConnection() 方法来获取数据库连接,获取方式如下:

(1) connection conn = DriverManager.getConnection(String url, String user, String pwd); (2)getConnection() 方法中有三个参数,它们分别是连接数据库的 URL 、登录数据库的用户和密码。 (3)其中用户名和密码通常由数据库管理员设置,而连接数据库的 URL 则遵循一定的写法

MySQL 数据库的地址书写格式实例:

(1) jdbc:mysql://hostname:port/databasename (2) jdbc:mysql 是固定的写法,mysql 指的是 MySQL 数据库。 (3) hostname 指的是主机的名称(如果数据库在本机上,hostname 可以为 或 127.0.0.1,如果在其他机器上,那么 hostname 为所要连接机器的 IP 地址)。 (4) port 指的是连接数据库的端口号(MySQL 端口号默认为 3306)。 (5) database 指的是 MySQL 中相应数据库的名称。

3. 通过 Connection 对象获取 Statement 对象

Connection 创建 Statement 的方式有如下三种:

(1) createStatement() :创建基本的 Statement 对象。 (2) prepareStatement(String sql) :根据传递的 SQL 语句创建 PreparedStatement 对象。 (3) prepareCall(String sql):根据传入的 SQL 语句创建 CallableStatement 对象。 ② 创建基本的 Statement 对象,其创建方式如下: Statement stmt = conn.createStatement();

4. 使用 Statement 执行 SQL 语句

所有的 Statement 都有如下三种执行 SQL 语句的方法:

(1)execute(String sql):用于执行任意的 SQL 语句。 (2)executeQuery(String sql):用于执行查询语句,返回一个 ResultSet 结果集对象。 (3)executeUpdate(String sql):主要用于执行 DML(数据操作语言)DDL(数据定义语言) 语句。执行 DML 语句(INSERT、UPDATE 或 DELETE)时,会返回受 SQL 语句影响的行数,执行 DDL(CREATE、ALTER)语句返回 0 。 ② 以 executeQuery 方法为例:

ResultSet rs = stmt.executeQuery(sql); :执行 SQL 语句,获取结果集 ResultSet

5. 操作 ResultSet 结果集

如果执行的 SQL 语句是查询语句,执行结果将返回一个 ResultSet 对象,该对象里保存了 SQL 语句查询的结果。程序可以通过操作该 ResultSet 对象来取出查询结果。

6. 关闭连接,释放资源

① 每次操作数据库结束后都要关闭数据库连接,释放资源,以重复利用资源。

② 需要注意的是,通常资源关闭的顺序与打开顺序相反,顺序是 ResultSetStatement(或 preparedStatement)和 Connection 。为了保证在异常情况下也能关闭资源,需要在 try... catchfinally 代码块中统一关闭资源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是 JDBC ?
  • 2. JDBC 常用 API
    • 1. Driver 接口
      • 2. DriverManager 类
        • 3. Connection 接口
          • 4. Statement 接口
            • 5. PreparedStatement 接口
              • 6. ResultSet 接口
              • 3. JDBC 编程步骤
                • 1. 加载数据库驱动
                  • 2. 通过 DriverManager 获取数据库的连接
                    • 3. 通过 Connection 对象获取 Statement 对象
                      • 4. 使用 Statement 执行 SQL 语句
                        • 5. 操作 ResultSet 结果集
                          • 6. 关闭连接,释放资源
                          相关产品与服务
                          数据库
                          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档