java - 如何使用提交来保存所有查询,如果任何一个查询失败,则不应保存数据

标签 java mysql netbeans commit autocommit

我有一个员工表单。我使用选项卡式 Pane 来获取四个不同的选项卡。但问题是,如果我在第一个选项卡上保存数据,则只会将其保存在数据库中。在其他选项卡上保存数据之前,我关闭了整个表单。因此在数据库中,我有第一个选项卡的条目,并且没有为其他选项卡保存数据...这给我进一步处理带来了错误。我知道提交,但我不知道在哪里以及如何使用它???我必须将表单所有选项卡中的所有数据保存到数据库,如果在表单之间关闭,则不应保存任何数据...请帮助我。

我想在java编程中使用它。并且每个选项卡的数据我保存在它自己的页面上而不是最后。

最佳答案

您应该在保存第一个选项卡中的数据之前设置一个回滚点,如果在其他选项卡上出现问题,那么您可以回滚最后一个事务以放弃更改并将数据库恢复到之前的状态。

这里是一个针对 MYSQL 的示例代码。希望它会有所帮助。

Drop table Books;


CREATE TABLE Books
(
   ID SMALLINT NOT NULL PRIMARY KEY,
   Title VARCHAR(60) NOT NULL,
   Copyright YEAR NOT NULL
)
ENGINE=INNODB;


select * from Books;

START TRANSACTION;
INSERT INTO Books VALUES (103, 'Angels', 1966);
INSERT INTO Books VALUES (104, 'Black', 1932);

SAVEPOINT sp1;

INSERT INTO Books VALUES (105, 'None', 1996);
INSERT INTO Books VALUES (106, 'A', 1980);

ROLLBACK TO SAVEPOINT sp1;

INSERT INTO Books VALUES (107, 'Postcards', 1992);
INSERT INTO Books VALUES (108, 'The', 1993);

COMMIT;

select * from Books;

关于java - 如何使用提交来保存所有查询,如果任何一个查询失败,则不应保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12506136/

相关文章:

java - 如何使用全局和本地二级索引将数据加载到 Dynamodb 表?

java - Android:我的异步方法有效吗?

java - 如何在java中检查新记录是否插入到数据库

java - 当我在 Netbeans 中按 Enter 时如何自然地中断 {}

java - 在 NetBeans 7.1 中手动添加 JPanel

java - Java 中具有原始类型 tryParse 方法的实用程序库?

java - 标签 :property value= does not show the expected message

类似于 mysql 的查询,检查逗号分隔数据中的值

java - 如何减少部分冲洗

java - Netbeans 和 .NET Web 服务