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 式は、現在のセッション中にその SEQUENCE の NEXT VALUE 式によって生成された最後の値を返します。

通常、数値データ領域は、一連の数値の生成を管理するために使用されます。その場合は、SEQUENCE を使用したほうがよいでしょう。

于 2013-04-06T01:37:08.490 に答える