使用JTOpen从AS400上的数据区读取数据区对象是否被锁定?

时间:2013-04-05 19:34:44

标签: java ibm-midrange jtopen

给定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

2 个答案:

答案 0 :(得分:3)

否......数据区操作是原子操作,因此除非您自己执行,否则不会发生锁定。

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

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

答案 1 :(得分:0)

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

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