我正在尝试使用 Java 库“JT400”获取我的所有查询/400 个查询的列表。
这是我们的终端应用程序中直观表示的列表:
我是一名会计师,而不是 AS400 程序员,所以我不知道这些查询在哪里或如何存储,也不知道如何检索数据以创建上述终端界面。
我对“ObjectList”查询进行了一些工作,但不知道它们将位于哪个库中(如果有的话)。我在网上遇到了一些 IBM 工具 IBM Tool Doc,它应该提供一个用于搜索 query/400 对象的命令行界面,但我不知道我们是否安装了该工具,或者它是否可以满足我的需要。
这是迄今为止我的代码:
ObjectList queryList = new ObjectList(as400, ObjectList.CURRENT_LIBRARY, ObjectList.ALL, ObjectList.ALL);
try {
// Retrieve the list of queries:
queryList.load();
try {
System.out.println(queryList.getLength());
} catch (Exception e) {
e.printStackTrace();
}
Enumeration queries = queryList.getObjects();
for (Enumeration e = queries; e.hasMoreElements();{
System.out.println(e.nextElement());
}
} catch (Exception e){
System.out.println("There was an exception processing the list of queries:");
e.printStackTrace();
}
我终于让它运行而没有错误,但它返回的对象对我来说看起来并不熟悉,当然也不是我习惯在终端中看到的查询名称列表。
我找到了问题的答案。
您可以使用JT400中的ObjectList类生成用户查询/400个查询的列表。
关键是在定义对象类型时在构造函数中使用“*QRYDFN”。在我的代码中,我还在第一个字符串参数中指定了特定用户。请参阅下面的构造函数信息和我的代码:
JT400 文档“对象列表”:
工作代码:
public static void ListQueries() throws AS400SecurityException, ObjectDoesNotExistException, IOException, InterruptedException, ErrorCompletingRequestException, RequestNotSupportedException {
AS400 as400 = new AS400();
// Define your object list parameters
// vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ObjectList queryList = new ObjectList(as400, as400.getUserId(), ObjectList.ALL, "*QRYDFN");
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// Execute your search
queryList.load();
// Create an enumeration containing the returned objects
Enumeration queries = queryList.getObjects();
// Iterate through the objects to print the query names
for (Enumeration e = queries; e.hasMoreElements();)
{System.out.println(e.nextElement());}
}
结果列表:
我想你的问题就在这里
new ObjectList(as400, ObjectList.CURRENT_LIBRARY, ObjectList.ALL, ObjectList.ALL);
objectType
参数的最终“ObjectList.ALL”。如果您只对 Query/400 查询感兴趣,请使用 *QRYDFN