1

您好,我正在使用 Java 连接到 IBM AS400。

我想读取 DDS 文件最后一次更改的时间戳,例如最后一次 SQL 操作的时间戳 ( INSERT INTO MyLib/MyDDS VALUES (...))。

在 5250 终端中,我可以转到“使用对象”并通过选择选项 5 (=show) 或简单地打开元数据DSPFD FILE(MyLib/MyDDS)。有时间戳。

另一种方法是运行dspjrn jrn(MyLib/MyJournal)以检查日志及其时间戳。

如何从 Java 访问时间戳,例如使用 JTOpen 或 SQL?

谢谢 :)

4

5 回答 5

3

SYSTABLESTAT似乎有您正在寻找的信息。

SELECT LAST_USED_TIMESTAMP
FROM QSYS2/SYSTABLESTAT
WHERE TABLE_SCHEMA = 'MyLib' AND TABLE_NAME = 'MyDDS'
于 2015-11-05T17:37:01.653 回答
1

您可以使用ObjectDescription对象来获取上次更改日期。

AS400 as400 = new AS400();
ObjectDescription od = new ObjectDescription(as400, "YOURLIB", "FILENAME", "FILE");

Date lastChangeDate = (Date)od.getValue(ObjectDescription.CHANGE_DATE);

编辑:使用 MemberDescription 和 MemberDescription.CHANGE_DATE_AND_TIME

于 2015-11-05T20:39:14.050 回答
1

Java 特定

JT400(和 JTOpen)提供与 QUSRMBRD 等系统 API 接口的类和方法,并返回可供 Java 函数使用的值。

有关成员数据更改(和其他属性),请参阅com.ibm.as400.access.MemberDescription字段 CHANGE_DATE_AND_TIME。

一般的

本机物理文件 (PF) 可以允许可以单独更新的多个数据成员。成员本质上是与包含它们的文件(类型为 *FILE)分开的对象(对象类型 *MBR)。IFS 将数据库文件呈现为“容器”,即,就好像它们是目录一样。成员的呈现方式很像目录中的流文件,并且成员跟踪各个成员内容的更改,因为包含的文件对象只有一个“更改”日期。

RTVMBRD 是本机命令,应始终存在。我没想到,但权限可能会限制访问。这就是 CL 通常检索数据更改日期的方式。或者,任何语言都可以使用检索成员描述 (QUSRMBRD) API来检索成员详细信息。

于 2015-11-12T14:40:38.263 回答
0

使用 QSYS2/SYSTSTAT 或 QSYS2/SYSTABLESTAT 将响应较慢,因为它正在使用连接文件。为了以良好的性能实现这一点,请使用

SELECT DBXATS
   FROM QSYS/QADBXREF
WHERE (DBXLIB = 'MyLib' and DBXFIL = 'MyDDS')
于 2018-11-08T12:16:17.723 回答
0

在您的查询中使用它...

SELECT LAST_USED_TIMESTAMP
FROM QSYS2/SYSTSTAT
WHERE (TABLE_SCHEMA, TABLE_NAME) = ('MyLib', 'MyDDS')
于 2015-11-07T15:28:45.800 回答