获取Java中AS400 DDS文件的上次更改日期

时间:2015-11-05 16:24:20

标签: ibm-midrange jt400 jtopen

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

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

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

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

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

谢谢:)

5 个答案:

答案 0 :(得分:3)

SYSTABLESTAT似乎有您要查找的信息。

SELECT LAST_USED_TIMESTAMP
FROM QSYS2/SYSTABLESTAT
WHERE TABLE_SCHEMA = 'MyLib' AND TABLE_NAME = 'MyDDS'

答案 1 :(得分:1)

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

<p>

编辑:使用MemberDescription和MemberDescription.CHANGE_DATE_AND_TIME

答案 2 :(得分:1)

Java特定

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

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

常规

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

RTVMBRD是一个本机命令,应该始终存在。我不指望它,但权威可能限制访问。这将是CL通常如何检索数据更改日期。或者,任何语言都可以使用Retrieve Member Description (QUSRMBRD) API来检索成员详细信息。

答案 3 :(得分:0)

在查询中使用此内容...

SharedPreferences sharedPreferences = getSharedPreferences("save",MODE_PRIVATE);

if(!sharedPreferences.getBoolean("opened",false)){
    //what you want do once
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putBoolean("opened", true);
  editor.apply();
}

答案 4 :(得分:0)

由于正在使用联接文件,因此使用QSYS2 / SYSTSTAT或QSYS2 / SYSTABLESTAT的响应速度会变慢。为了达到良好的性能,请使用

SELECT DBXATS
   FROM QSYS/QADBXREF
WHERE (DBXLIB = 'MyLib' and DBXFIL = 'MyDDS')