| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Java JDBC 事务管理示例 -> 正文阅读 |
|
[大数据]Java JDBC 事务管理示例 |
本教程解释了 JDBC 事务类型、数据类型、事务管理方法,以及如何在 Java 程序中使用它们: 在JDBC 教程系列的JDBC ResultSet教程中,我们学习了使用 JDBC ResultSet 来检索数据。 在本教程中,我们将讨论 JDBC 中的事务类型。我们已经在之前的教程中看到了对事务类型的简要介绍。在这里,我们将详细了解。我们还将介绍 JDBC 中的数据类型以及如何在 Java 程序中使用它。 数据库将具有不同的数据类型,Java 将具有不同的数据类型。JDBC 将管理这种差异化。让我们准备好了解 JDBC 中的重要主题。 JDBC 事务管理操作序列(SQL 语句)被视为称为事务的单个单元。事务管理对于面向 RDBMS 的应用程序保持数据完整性和一致性很重要。 在执行事务时,我们将使用 getXXX 和 setXXX 方法来检索和设置 ResultSet 对象中的数据。XXX 代表列的数据类型。我们将在本教程中讨论 JDBC 的事务和数据类型。 交易类型在 JDBC 中,每个 SQL 查询都将被视为一个事务。当我们在 JDBC 中创建数据库连接时,它将以自动提交模式运行(自动提交值为 TRUE)。SQL 语句执行后,会自动提交。 有时,我们可能希望在执行更多 SQL 语句后提交事务。这时,我们需要将自动提交值设置为 False。因此在执行所有查询之前不会提交数据。如果我们在事务中遇到异常,我们可以回滚()更改并使其像以前一样。事务管理可以很好地解释——使用 ACID 属性。 酸是什么意思
事务管理中有三个最重要的功能。?他们是:
到目前为止,我们已经了解了什么是提交、回滚和保存点及其操作。下面,我们将看到它的方法以及如何在程序中使用它。 事务管理方法连接接口提供了 5 种事务管理方法。它们如下: #1) setAutoCommit() 方法 默认情况下,AutoCommit 值的值为 TRUE。SQL 语句执行后,会自动提交。通过使用 setAutoCommit() 方法,我们可以将值设置为 AutoCommit。 #2) Commit() 方法 commit 方法用于提交数据。SQL语句执行完毕后,我们可以调用commit()。它将提交由 SQL 语句所做的更改。 语法:?conn.commit(); #3) Rollback() 方法 回滚方法用于撤消更改,直到最后一次提交发生。如果我们在 SQL 语句的执行流程中遇到任何问题或异常,我们可能会回滚事务。 语法:?conn.rollback(); #4) setSavepoint() 方法 Savepoint 为您提供了对事务的额外控制。当您在事务(一组 SQL 语句)中设置保存点时,您可以使用 rollback() 方法撤消直到保存点或保存点()之后的所有更改。setSavepoint() 方法用于创建新的保存点。 #5) releaseSavepoint() 方法 它用于删除创建的保存点。 在下面的程序中,您将更多地了解这些方法,还将学习如何在 Java 程序中使用它。 在本教程中,所有程序都是用 Java 编写的。我们使用了 Java 8 版本和 Oracle DB。 >> 点击这里下载 Oracle 软件。 >> 点击这里下载 Java 版本 8。 它有一步一步的Java安装过程。 事务示例程序
输出: 解释: 我们在上述事务管理程序中所做的是更新 EMPLOYEE_DETAILS 表中给定员工的值并提交数据。如果发生任何错误或异常,那么我们已经完成了 rollback() 操作。现在我们将看到该程序的完整说明。 #1)根据 2 名员工的 EMPID 创建 2 选择查询 以下是 2 个选择查询。
#2)根据 2 名员工的 EMPID 创建了两个更新查询 两个更新的查询:
#3)打开Connection,执行select查询,显示EMPNUM = 2001的数据。 #4)使用 setAutoCommit() 方法,将 autoCommit 的值设置为 false。 #5)执行 EMPNUM = 2001 的更新查询并为同一个数据库创建另一个连接并选择 EMPNUM =2001 的值。 #6)?EMPNUM = 2001 的Employee的结果数据不是更新的数据。因为我们还没有完成 commit() 操作。如果您在更新时使用了相同的连接,它会向您显示更新后的数据。现在提交数据。数据已反映在表中。 #7)在提交操作后创建一个保存点。 #8)使用选择查询显示 EMPNUM = 2002 的数据。使用更新查询更改了该员工的工资。之后显示 EMPNUM = 2002 的数据,使用相同的连接。它应该显示更新的数据。 #9)使用回滚方法完成回滚直到最后一个保存点。现在,当我们使用相同的连接显示该员工的数据时,它具有旧数据,因为如果我们在最后一次提交中提及保存点,则回滚会撤消直到最后一个保存点的更改。 #10)我们创建了一种显示数据的方法,因为我们在这里多次显示数据。 JDBC 数据类型数据库具有 SQL 数据类型,Java 具有 Java 数据类型。Java 应用程序和数据库之间应该有一种读写数据的机制。不同的数据库支持 SQL 类型,但名称有所不同。 例如,大多数数据库都支持大二进制值,Oracle 将其称为 LONG RAW,Sybase 将其称为 IMAGE,Informix 将其称为 BYTE,DB2 将其称为 LONG VARCHAR FOR BIT DATA。 在编写 JDBC 程序时,我们不必担心目标数据库使用的 SQL 数据类型。JDBC 在 java.sql.Types 类中有一组通用 SQL 类型标识符。这些类型旨在支持大多数通用 SQL 数据类型。在编写 JDBC 程序时,我们将只使用 JDBC 数据类型。 JDBC 驱动程序将 Java 数据类型来回转换为数据库数据类型。您可以使用 java.sql.DatabaseMetaData.getTypeInfo 方法检查给定数据库实际支持哪些 SQL 类型,然后编写程序。JDBC 对大多数数据类型使用默认映射。 例如,?Java 字符串将被转换为 SQL VARCHAR 类型。 我们将在下表中的preparedStatement或CallableStatement或ResultSet接口的setXXX、getXXX和updateXXX方法中看到映射是如何完成的:
在之前的教程中,我们已经为基本数据类型提供了 setXXX、getXXX 和 updateXXX 方法。你可以参考那个。 在这里,我们在以下示例中解释了 clob 和 blob 类型。 BLOB 示例程序
输出: 文件已成功保存在给定路径中。 解释: 在上面的程序中,我们所做的是首先我们在文件夹“D:\\Bhakiya\\Bhakiya\\JDBC”中创建/保存了一张图像。这个位置只是一个例子。您可以在系统中创建自己的文件路径。该文件的名称是软件测试图片。然后我们创建了一个 Java 程序来将该图像存储在 DB 表中,并从表中检索图像并将其存储在本地系统中。 到目前为止,我们已经讨论了任务的概述。现在我们将看看我们是如何在程序中实现它的。 #1)在数据库中创建一张表来存储图像。 句法: String QUERY = "创建表 Blob_Sample_Example (PicName varchar2(30), 图片 BLOB)";
在上面的查询中,我们有 2 列。
BLOB 数据类型用于将图片/图像存储在 DB 表中。 #2)已创建连接和语句并调用执行方法来执行创建查询。 statemnt1.execute(QUERY);
#3)接下来,我们创建了插入查询并使用 PreparedStatement 执行它。 PreparedStatement 语法: PreparedStatement pstmnt = conn.prepareStatement(insert_query);
#4)使用 setString() – 设置图片的名称。 #5)要设置图片,请使用 FileInputStream 类传递图片位置。 句法: FileInputStream inputStream = new FileInputStream("图片全路径");
然后,使用 setBlob() 方法,我们可以在 PreparedStatement 对象中设置图片。之后,调用 PreparedStatement 的执行方法。这将在表中插入给定的数据。 执行插入查询后,通过使用 ResultSet 对象,我们从 Table 中检索数据(使用 Select Query)。 #6)通过使用getString方法,我们可以得到PicName Column的值。 #7)?要获取图片,请按照以下步骤操作:
#8)到Output图片所在的位置,检查输入输出是否一致。 CLOB 示例程序
输出: 输入文件: 文件已成功保存在给定路径中。 输出文件: 解释: 在上面的程序中,我们首先在“D:\\Bhakiya\\Bhakiya\\JDBC”文件夹中创建/保存了一个文本文件“file1.txt”。这个位置只是一个例子。您可以在系统中创建自己的文件路径。然后我们创建了一个 Java 程序来将该文件存储在 DB 表中,并从表中检索该文件并将其存储在本地系统中。 到目前为止,我们已经讨论了任务的概述。现在我们将看看我们是如何在程序中实现它的。 #1)在数据库中创建一张表来存储图像。 下面是 CREATE TABLE 查询的语法: String QUERY = "创建表 Clob_Sample_Example (FileName varchar2(30), StoreFile CLOB)";
在上面的查询中,我们有 2 列。
CLOB数据类型用于存储DB Table中二进制数据的Character类型 #2)已创建连接和语句并调用执行方法来执行创建查询。 statemnt1.execute(QUERY);
#3)接下来,我们创建了插入查询并使用 PreparedStatement 执行它。 PreparedStatement 语法: PreparedStatement pstmnt = conn.prepareStatement(insert_query);
#4)使用 setString() – 设置 FileName 的名称。 #5)要设置/存储文件,请使用 FileReader 类传递带有填充位置的文件。 句法: FileReader fileRead = new FileReader("D:\\Bhakiya\\Bhakiya\\JDBC\\file1.txt");
然后使用 setClob() 方法,我们可以在 PreparedStatement 对象中设置文件。之后调用 PreparedStatement 的执行方法。这将在表中插入给定的数据。 执行插入查询后,我们使用 ResultSet 对象从表中检索数据(使用选择查询)。 选择查询: “从 Clob_Sample_Example 中选择 *”
#6)使用 getString 方法我们可以获得 FileName Column 的值。 #7)要获取文件,我们遵循以下步骤:
#8)到Output文件所在位置,检查输入输出文件是否相同。 要记住的要点:
经常问的问题Q #1) 什么是 JDBC 数据类型? 答:?Java 有它的数据类型,数据库也有它的数据类型。JDBC 驱动程序将 Java 数据类型转换为数据库接受的适当 SQL 数据类型。ResultSet 对象还提供可用于适当数据类型的 setXXX() 方法和 getXXX() 方法。 Q #2) Java 中日期的数据类型是什么? 答:?Java 中的日期不仅是一种数据类型,而且是一个类。Java 中的 Date 具有日期、时间、年份、日期名称、星期几和时区。Date 类具有适当的方法来检索相关数据。 Q #3) java.util.Date 和 java.sql.Date 有什么区别? 答:主要区别在于 java.util.Date 也包含有关日期和时间的信息。但 java.sql.Date 仅包含有关日期的信息。这是我们不能将 java.util.Date 直接映射到 java.sql.Date 的主要区别。 Q #4) 我们在 Java 中有一个类来表示 SQL 的 TIME 和 TIMESTAMP 类型吗? 答:是的,我们有一个用于 SQL 的 TIME 和 TIMESTAMP 类型的类。java.sql.Time 类表示与 TIME 相关的信息。java.sql.timestamp 类表示 TIMESTAMP 相关信息。 Q #5) 如何在 JDBC 中启动事务? 答:?JDBC 连接以启用自动提交模式开始,其中每条 SQL 语句都被视为一个事务。JDBC 中没有启动事务的特定过程。当您创建连接并开始执行 SQL 语句时,事务就开始了。 Q #6) Java 中的 commit() 方法是什么? 答:?Java 中的 Commit() 方法用于保存自上次 commit() 以来所做的更改。Commit() 方法在 Connection 接口中可用。使用连接对象,我们可以调用 commit()。 Q #7) Java 中的回滚方法是什么? 回答:在最后一次commit()之后,如果出现任何问题,我们可以调用rollback()方法来恢复所有所做的更改,直到最后一次commit.rollback()方法在Connection接口中可用。使用连接对象,我们可以调用 rollback() 方法。 结论在这里,我们介绍了 Java 和 DB 中的数据类型以及 JDBC 驱动程序如何处理它。我们已经讨论了 ACID 的特性。这对于银行业来说是最重要的。这对你的职业生涯会有很大帮助。在事务管理部分,我们讨论了提交和回滚方法,例如 commit()、rollback()、setAutoCommit()、setSavepoint() 和 releaseSavepoint()。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:43:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |