执行查询操作。该操作对于查询必选。查询操作只能在连接对象中执行。
默认接口search方法得到1条数据就返回,然后在getCount不会大于1。
LDAPSearchResults结果集循环时将继续获取数据,循环完成前如退出需调用close关闭。
接口基本信息说明
itec.ldap.LDAPConnection
1、public LDAPSearchResults search( String s, int i, String s1, String as[], boolean flag )
throws LDAPException
2、public LDAPSearchResults search( String s, int i, String s1, String as[], boolean flag,
LDAPSearchConstraints ldapsearchconstraints ) throws LDAPException
异常说明
异常对象LDAPException的获取结果码方法,将返回结果码:
LDAPException.CONNECT_ERROR(10进制91),则数据操作时连接失败;
LDAPException.LDAP_TIMEOUT(10进制85),则数据操作超时;
应用应捕获该异常并做错误处理,如果是连接错误,请再次创建或获取连接并尝试。
请求示例
LDAPConnection ld = new LDAPConnection(); //创建一个LDAP连接对象;
//执行连接操作
......
final String[] attrs = null; 在查找结果中要返回的属性列表;
- 不带约束参数的查询(可事先通过参数设置,完成约束参数设置)
LDAPSearchResults res = ld.search ( "dc=AB", LDAPv3.SCOPE_SUB, "(sn=1234)",
attrs, false); //条目查询结果集合;
- 带约束参数的查询(每条查询语句可使用单独的约束参数设置)
LDAPSearchConstraints lsc = ld.getSearchConstraints();
lsc.setTimeLimit(50); //设置接口端的数据操作超时时间为50毫秒
//也可以在这里设置其他参数,比如setServerTimeLimit,setMaxResults,setBatchSize
//查询条件sn=1234对应的sn属性应具有相等匹配、子串匹配等匹配规则
LDAPSearchResults res = ld.search ( "dc=AB", LDAPv3.SCOPE_SUB, "(sn=1234)",
attrs, false, lsc); //条目查询结果集合;
// 通过循环遍历集合,获取条目及属性值,只能遍历一次
//在循环中,ld对象不能用于其他的操作,比如嵌套的新查询,或者增删改操作
//如果需要做其他的操作,请创建新的连接来进行
while (res !=null && res.hasMoreElements()) {
try {
//如果结果集的所有条目没有循环结束就退出
//需在跳出后执行res.close();释放内存资源
findEntry = res.next();
} catch (LDAPException e) {
System.out.println("Error: " + e.toString());
continue;