2

给定来自 JTOpen 的 DecimalDataArea,在读取和写入数据区域时,AS400 上的对象是否会被锁定,从而阻止 AS400 上的其他应用程序同时写入它?

这是来自 javadoc 关于如何读/写等的示例代码。

// Prepare to work with the system named "My400".
AS400 system = new AS400("My400");

// Create a DecimalDataArea object.
QSYSObjectPathName path = new QSYSObjectPathName("MYLIB", "MYDATA", "DTAARA");
DecimalDataArea dataArea = new DecimalDataArea(system, path.getPath());

// Create the decimal data area on the system using default values.
dataArea.create();

// Clear the data area.
dataArea.clear();

// Write to the data area.
dataArea.write(new BigDecimal("1.2"));

// Read from the data area.
BigDecimal data = dataArea.read();

// Delete the data area from the system.
dataArea.delete();

http://javadoc.midrange.com/jtopen/com/ibm/as400/access/DecimalDataArea.html

4

2 回答 2

3

不......数据区操作是原子的,所以除非你自己做,否则不会发生锁定。

在内部,实现实际上用于CHGDTAARA更新数据区域。

虽然不会是一个糟糕的增强。

于 2013-04-05T19:47:12.003 回答
0

如果您使用 SQL CREATE SEQUENCE 语句创建数据,那么您可以通过 JDBC使用NEXT VALUE 。您可以在 SELECT、INSERT、UPDATE 等 SQL 语句中使用 NEXT VALUE 表达式。它将读取值、递增值、更新 SEQUENCE 并将新值返回给您,并且可以在承诺控制下完成。PREVIOUS VALUE 表达式将返回当前会话期间由 NEXT VALUE 表达式为该 SEQUENCE 生成的最后一个值。

通常,数字数据区域用于管理生成一系列数字。如果是这种情况,那么最好使用 SEQUENCE。

于 2013-04-06T01:37:08.490 回答