Hallo zusammen,
ich fluche derzeit über folgendes Szenario und hoffe, jemand hat eine zündende Idee für mich^^
Ich habe eine Liste von Usern, die ich gerne mit einer Tabelle in einer Database abgleichen möchte, um nur die daraus zu extrahieren, die sowohl in Liste als auch in Table vorhanden sind. Das zu vergleichende Attribut heißt "GID".
Hier ergeben sich aber zwei Szenerien - zum einen Zugriff auf eine Oracle-DB mit einer entsprechenden Tabelle ([1] läuft, hier zu Illustrationszwecken aufgeführt) und zum anderen Zugriff über eine ADODB.Connection auf LDAP ([2] läuft mal gar nicht :-().
Oracle-Version [1], läuft, zur Illustration, was ich eigentlich will
Nun stehe ich aber wie die Ochsin (weiblicher Ochse? egal..^^) vorm Berg, da ich den Abgleich über eine ADODB.Connection anstatt über eine Oracle-Connection machen soll. Soll heißen, ich habe auf einmal keinen DataReader mehr zur Verfügung, ich kann keine SQL-Statements mehr einsetzen und finde eigentlich nur irgendwelche häßlichen Skripting-Beispiele in der Art von
So kann ich mir zwar einzelne Personen rausholen - aber ich möchte doch erstmal alle Attribute/Spaltennamen/Eigenschaften haben und dann möchte ich einzeln nach dem GID-Attribut vergleichen - und mir nur die rausholen, die in beiden Listen (der vorher vorhandenen Liste von Usern, identifiziert über GUID und der LDAP-Quelle) vorhanden sind.
Ich hoffe einfach mal, der Wunsch, eine ADODB.Connection für LDAP direkt aus VB heraus zu nutzenist nicht so ungewöhnlich(?)
Wie muss ich es in etwa angehen, damit ich das rausbekomme, was ich oben bei dem Oracle-Beispiel durchspiele?
Liebe, ratlose Grüße
Steffi
ich fluche derzeit über folgendes Szenario und hoffe, jemand hat eine zündende Idee für mich^^
Ich habe eine Liste von Usern, die ich gerne mit einer Tabelle in einer Database abgleichen möchte, um nur die daraus zu extrahieren, die sowohl in Liste als auch in Table vorhanden sind. Das zu vergleichende Attribut heißt "GID".
Hier ergeben sich aber zwei Szenerien - zum einen Zugriff auf eine Oracle-DB mit einer entsprechenden Tabelle ([1] läuft, hier zu Illustrationszwecken aufgeführt) und zum anderen Zugriff über eine ADODB.Connection auf LDAP ([2] läuft mal gar nicht :-().
Oracle-Version [1], läuft, zur Illustration, was ich eigentlich will
Code:
Dim memberVariableOracleConnection As OracleConnection Dim memberVariableTableName As String Dim memberVariableAnzahlSpalten As Integer Dim memberVariableSpaltenListe As String Dim memberVariableUserArrayList As ArrayList '(hier schon mit Usernamen gefüllt) Dim memberVariableSpeichereResultateListe As ArrayList Private Sub GetUsers() Dim cmdSchema As String Dim cmdIn As OracleCommand Dim reader As OracleDataReader Dim userName As String 'Select-Statement zum Auslesen des Schema der Oracle-Tabelle cmdSchema = "SELECT COLUMN_NAME, COLUMN_ID, DATA_TYPE, DATA_LENGTH FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='" + memberVariableTableName + "' ORDER BY COLUMN_ID" cmdIn = New OracleCommand(cmdSchema, memberVariableOracleConnection) reader = cmdIn.ExecuteReader memberVariableAnzahlSpalten = 0 memberVariableSpaltenListe = "(" ' Auslesen der Spaltennamen aus der OracleTabelle If (reader.HasRows) Then While reader.Read Dim spaltenName As String = reader.GetString(reader.GetOrdinal("COLUMN_NAME")) memberVariableSpaltenListe += colName + "," memberVariableAnzahlSpalten += 1 End While End If 'Generierung von Select-Statements - abschliessendes, ueberfluessiges Komma entfernen und String vervollstaendigen memberVariableSpaltenListe = memberVariableSpaltenListe.Remove(memberVariableSpaltenListe.Length - 1, 1) memberVariableSpaltenListe += ")" 'eigentliche Tabellenabfrage mit den gerade nach dem Schema generierten Statements For i As Integer = 0 To (memberVariableUserArrayList.Count - 1) userName = memberVariableUserArrayList(i).toString() cmdSchema = "SELECT * FROM " + m_memberVariableTableName + " WHERE GID = '" + userName + "'" cmdIn = New OracleCommand(cmdSchema, memberVariableOracleConnection) reader = cmdIn.ExecuteReader While reader.Read() Dim userValues As String = "(" For j As Integer = 0 To memberVariableAnzahlSpalten - 1 userValues += "'" + reader.GetValue(j) + "'," Next userValues = userValues.Remove(userValues.Length - 1, 1) userValues += ")" memberVariableSpeichereResultateListe.Add(userValues) End While Next End Sub
Nun stehe ich aber wie die Ochsin (weiblicher Ochse? egal..^^) vorm Berg, da ich den Abgleich über eine ADODB.Connection anstatt über eine Oracle-Connection machen soll. Soll heißen, ich habe auf einmal keinen DataReader mehr zur Verfügung, ich kann keine SQL-Statements mehr einsetzen und finde eigentlich nur irgendwelche häßlichen Skripting-Beispiele in der Art von
Code:
Set conLDAP = CreateObject("ADODB.Connection") conLDAP.Provider = "ProviderObject" conLDAP.ConnectionString = "ConnectionString" conLDAP.Open stateMent = "<LDAP://hierkoennte.ihrServerSteh.en:395>;" & _ "(&(objectClass=person));" & _ "gid, givenName, telephoneNumber"" Set rs = conLDAP.Execute(stateMent)
Ich hoffe einfach mal, der Wunsch, eine ADODB.Connection für LDAP direkt aus VB heraus zu nutzenist nicht so ungewöhnlich(?)
Wie muss ich es in etwa angehen, damit ich das rausbekomme, was ich oben bei dem Oracle-Beispiel durchspiele?
Liebe, ratlose Grüße
Steffi
Comment