我正在实现事务的No undo/redo算法。我计划使用Java的内置功能,而不是使用SQL表。但我不确定如何充分利用它们。因此,我们将非常感谢为我的实现提供的任何帮助或指导。我的任务如下。
每当我得到一个新的事务时,我都必须将它插入到事务表中。假设我得到的交易如下。
b1;
因此,我的交易表如下。
TransactionID Transaction_Status Transaction_Items
1 Active NIL
现在,当我收到一个使用相同事务ID编写的项目时,我必须单独更新transaction_items列。
我收到的交易项目如下。
W1(X,2,0);
TransactionID Transaction_Status Transaction_Items
1 Active X
在我遇到提交事务后,
C1;
我的交易表应该更新如下。
TransactionID Transaction_Status Transaction_Items
1 Commit X
我可以使用SQL表实现上述结构,并轻松更新列。但我计划使用java本身提供的丰富实现。我决定使用链表来实现。但我无法在链表中设置关键字。基本上,我正在尝试实现一个链表数组。我无法清楚地理解这个概念。如能为实现上述目标提供正确方向的帮助,我们将不胜感激。
如果需要更多信息,请告诉我。
我正在使用arraylist来实现我已经讨论过的上述结构。set语句将覆盖我之前设置的值。通过这种方式,我可以模拟数据库更新操作。假设最初我的transactiononitemarraylist有以下项目。
XY
现在我想在X上再加一个Z(说X和Z)。我正在使用以arraylist.size为上限的for循环遍历到那个特定的实例。一旦我找到我的特定项,我就会将现有值复制到本地字符串中。之后,我将连接需要插入的所需值。完成后,我将使用下面的行进行实际更新。
transactiononitem.set(i,transactionupdate);
感谢大家的帮助。如果你需要更多信息,请告诉我。
我认为您在数据库方面已经走上了正轨,如果将其转储,您将损失惨重。
就丰富性而言,使用本地SQLite数据库来保存对象将是非常困难的。
以下是一些仅在Java中很难实现的问题,但您可以从SQLite(+Java)免费获得这些问题:
- 对任何表格数据使用任意列列表,并为用户提供按任意列排序的功能——您所需要做的就是更改ORDERBY子句
- 通过创建适当的索引,即使对象列表非常大,也可以保持最高的性能
- 使用标准SQL进行数据操作(使用索引-非常快!)
- 您可以使用SQLite必须提供的真实事务,并且可以随时保证数据的一致性
- 如果您的Java应用程序退出或崩溃,那么您所有的Java对象都将消失。但,若您将它们保存在数据库中,只需在启动时从数据库中读取它们,就可以继续执行中断的操作——不需要考虑序列化或反序列化(或者,至少这应该是一个小得多的问题)
- 在某些情况下,您不希望将数据保留在磁盘上,这很好。只需使用
:mem:
作为数据库文件名,就可以在内存数据库中使用SQLite——使用SQL进行快速数据处理是非常快速和方便的