在调用 LDAPConnection 对象的 search 方法进行目录查询时,查询结果将以 一个LDAPSearchResults 对象的格式返回。 查询结果中包括一个由 LDAPEntry 对象表示的条目列表,还可以包括异常。 每个条目都含有一组属性,这些属性由 LDAPAttributeSet 对象表示。单独的属性 使用 LDAPAttribute 对象表示。每个属性中都有一组值可以得到。
LDAPSearchResults 对象表示查询的结果。这些结果可以包 括 查 询 得 到 的 条 目 以 及 结 果 代 码 ( 如 果 LDAP 客 户 端 从 服 务 器 得 到
ADMIN_LIMIT_EXCEEDED,TIME_LIMIT_EXCEEDED 或 SIZE_LIMIT_EXCEEDED 结 果 代码,GBase XDM Cluster 开发接口 Java API 将在查询结果的这个结果代码中添 加相应的异常)。
要从 LDAPSearchResults 对象中获取条目,既可以调用 next 方法也可以调 用 nextElement 方法。
如果调用的是 next 方法,且查询结果中的下一项为一个条目,该方法就
会返回一个 LDAPEntry 对象。
如 果 下 一 项 为 ADMIN_LIMIT_EXCEEDED, TIME_LIMIT_EXCEEDED 或
SIZE_LIMIT_EXCEEDED 等 LDAP 结 果 代 码 , LDAP Java 类 将 产 生 一 个
LDAPException 异常。
调用 nextElement 方法时,将返回一个 LDAPEntry 和一个 LDAPException 对
象 , 这 个 对 象 必 然 会 用 到 。 在 查 询 结 果 中 迭 代 时 , 可 以 通 过
hasMoreElements 方法判断是否已经达到查询结果末尾。
如果没有到达迭代末尾就退出,需在 finally 中调用 close 方法,关闭结果
集,否则可能会造成内存泄露。
例如:
...
LDAPConnection ld=null;
try
{
/* 新建一个 LDAPConnection 对象 */
ld=new LDAPConnection();
...
/*发送查询请求*/
LDAPSearchResults
res=ld.search(baseDN,searchScope,searchFilter,getAttrs,false);
/*通过结果循环直到结束*/
while(res.hasMoreElements())
{
/*得到结果中的下一个条目*/
LDAPEntry findEntry=null;
try
{
findEntry=res.next();
}
catch (LDAPException e)
{
System.out.println("Error: "+ e.toString());
continue;
}
...
}
...
}
catch (LDAPException e)
{
...
}