java - 如何使用 jt400 API 仅检索启用 AS400 的用户

标签 java ibm-midrange jt400 jtopen

是否可以仅检索已启用的用户 - 添加过滤器 - 到 jt400 UserList 的 getUsers 方法?

我做了以下实现,但效果不佳, 所以我试图找到一种更好的方法,以及是否有可能过滤用户并仅获取启用的用户。

Set<String> as400Users = new HashSet(); 
AS400 as400 = new AS400(host, username, password);

//Retrieving Users
UserList users = new UserList(as400);
Enumeration io = users.getUsers();

  while (io.hasMoreElements()) {
            com.ibm.as400.access.User u = (com.ibm.as400.access.User)io.nextElement();
            String userName = u.getName();

            if (u.getStatus().equalsIgnoreCase("*ENABLED")) {
                as400Users.add(userName);
            }

        }

最佳答案

您可以像这样查询 USER_INFO View :

select * 
from qsys2.user_info
where status = '*ENABLED'

这在 v7.1 中可用。请注意,这仅向您有权访问的用户提供。

您可能还想将 getName() 调用移至过滤器内:

Set<String> as400Users = new HashSet(); 
AS400 as400 = new AS400(host, username, password);

//Retrieving Users
UserList users = new UserList(as400);
Enumeration io = users.getUsers();

while (io.hasMoreElements()) {
    com.ibm.as400.access.User u = (com.ibm.as400.access.User)io.nextElement();

    if (u.getStatus().equalsIgnoreCase("*ENABLED")) {
        as400Users.add(u.getName());
    }

}

或者您可以使用更新的 foreach 语法和 getUsers(-1,0)

Set<String> as400Users = new HashSet(); 
AS400 as400 = new AS400(host, username, password);

//Retrieving Users
UserList users = new UserList(as400);
for (com.ibm.as400.access.User u: users.getUser(-1,0)) {
    if (u.getStatus().equalsIgnoreCase("*ENABLED")) {
        as400Users.add(u.getName());
    }
}

现在只需选择最快的方法即可。

关于java - 如何使用 jt400 API 仅检索启用 AS400 的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47347340/

相关文章:

java - 无法转换假脱机文件数据 - Java (JT400)

Java:使用 Scanner 类从文件中读取输入而无需管道

java - 在 Fragment Pager Adapter 中保留 Fragment 的实例状态

java - 我在哪里可以找到 AS400 到 Java 的接口(interface)?

javascript - 如何在sql中使用时间戳字符串查询日期时间戳字段

java - 在 iSeries 上使用指定作业名称从 Java 创建假脱机文件

java - IDEA 启动本地 glassfish 服务器失败

java - 如何在 Eclipse 中将 '//TODO Auto-generated method stub' 更改为其他内容?

sql - DB2/400 select * 有效,但 count(*) 无效

unix - 在 IBM i qsh 中使用 Unix ls 在 ifs 上的文件的对象列表