LDAP 方言

LDAP 方言是一种使用 LDAP 搜索筛选器语法的查询语句格式。 在以下 ADSI 搜索接口中使用 LDAP 查询语句:

LDAP 方言字符串由分号 (;) 分隔的四个部分组成。

  • 基准可分辨名称。 例如:

    <LDAP://DC=Fabrikam,DC=COM>
    
  • LDAP 搜索筛选器。 有关搜索筛选器的详细信息,请参阅搜索筛选器语法

  • 要检索的属性的 LDAP 显示名称。 多个属性之间用逗号分隔。

  • 指定搜索范围。 有效值包括“base”、“onelevel”和“subtree”。 在 LDAP 查询字符串中指定的范围会覆盖使用 ADO 命令对象的“SearchScope”属性指定的任何搜索范围。

下面是 ADSI 中 LDAP 方言的代码示例,它可以搜索子树中的所有对象。

"<LDAP://DC=Fabrikam,DC=com>;(objectClass=*);AdsPath, cn;subTree"

并非所有搜索选项(例如搜索页面大小)都能在 LDAP 方言中表达,因此必须在实际执行查询之前设置这些选项。

用于执行 LDAP 查询的示例代码

下方的代码示例演示了如何使用 LDAP 查询

Dim con As New Connection, rs As New Recordset
Dim adVariant
Dim i 'Used for counter
Dim j 'Used for counter
Dim Com As New Command
Dim strDomain As String
Dim strPassword As String
 
' Open a Connection object.
con.Provider = "ADsDSOObject"
con.Properties("ADSI Flag") = 1
con.Properties("User ID") = strDomain + "\" + strUserID
con.Properties("Password") = strPassword

con.Open "Active Directory Provider"
 
' Create a command object on this connection.
Set Com.ActiveConnection = con
 
' Set the query string.
Com.CommandText = "<LDAP://MyServer/DC=MyDomain,DC=Fabrikam,DC=com>;
     (objectClass=*);ADsPath, objectclass;base"
 
' Set search preferences.
Com.Properties("Page Size") = 1000
Com.Properties("Timeout") = 30 'seconds
 
' Execute the query.
Set rs = Com.Execute
 
' Navigate the record set.
rs.MoveFirst
While Not rs.EOF
    For i = 0 To rs.Fields.Count - 1
        If rs.Fields(i).Type = adVariant And Not (IsNull(rs.Fields(i).Value)) Then
            Debug.Print rs.Fields(i).Name, " = "
            For j = LBound(rs.Fields(i).Value) To UBound(rs.Fields(i).Value)
                Debug.Print rs.Fields(i).Value(j), " # "
            Next j
        Else
            Debug.Print rs.Fields(i).Name, " = ", rs.Fields(i).Value
        End If
    Next i
    rs.MoveNext
Wend
 
rs.MoveLast
Debug.Print "No. of rows = ", rs.RecordCount

有关查询语法的详细信息,请参阅搜索筛选器语法

搜索筛选器语法

SQL 方言

使用 IDirectorySearch 接口进行搜索

使用 ActiveX 数据对象进行搜索

使用 OLE DB 进行搜索