windows:powershell_oracle_db_abfragen
Mit der PowerShell die Oracle Datenbank mit .NET abfragen
Vorbereitung: .Net Objekte auf dem Server installieren
Falls die nicht bereits mit der Installations der Oracle Software erfolgt ist:
- Download Software 32 Bit unter 32bit ODAC 11.2 Release 4 (11.2.0.3.0) XCopy version
- oder
- Download Software ODAC112030Xcopy_x64.zip - 64 Bit unter 64bit ODAC 11.2 Release 4 (11.2.0.3.0) XCopy version
- Software entpacken
- Software installieren z.B. die 64bit variante unter d:\oracle\product\11.2.0.3\client_64bit
- Adinistrative Powershell Console öffnen und in das entpackte Verzeichnis wechseln
- Aufruf .\install.bat .\install.bat all D:\oracle\product\11.2.0.3\client_64bit ora_client_64bit
- Die Software wird kopiert
- TNSAdmin.ora auf gewünschte DB einrichten (empfohlen: Speicherort tnsnames.ora über die TNS_ADMIN Variable definieren!)
Aufruf PowerShell
# DataAcess DLL einbinden $AssemblyFile ="d:\oracle\product\11.2.0.3\client_64bit\odp.net\bin\2.x\Oracle.DataAccess.dll" # Connect String mit Angabe TNS Alias $ConnectionString = "User ID=scott;Password=tiger;Data Source=oraGPI;Persist Security Info=True" # Auszuführendes Kommando $SQLCommand = "SELECT * FROM EMP where deptno=10" # DLL laden [Reflection.Assembly]::LoadFile($AssemblyFile) # Falls der Fehler auftritt : " ist keine zulässige Win32-Anwendung. (Ausnahme von HRESULT: 0x800700C1)" # auf richtige bit Variante der DLL Achten (64bit OS => 64bit Oracle Home!) #Verbindung zur Datenbank aufbauen # Object anlegen $OracleConnection = New-Object -TypeName Oracle.DataAccess.Client.OracleConnection # Connect string setzen $OracleConnection.ConnectionString = $ConnectionString # Datenbank Verbindung öffnen $OracleConnection.Open() #SQL Kommando initalisieren $OracleCommand = New-Object -TypeName Oracle.DataAccess.Client.OracleCommand $OracleCommand.CommandText = $SQLCommand $OracleCommand.Connection = $OracleConnection # Adapter laden $OracleDataAdapter = New-Object -TypeName Oracle.DataAccess.Client.OracleDataAdapter $OracleDataAdapter.SelectCommand = $OracleCommand #Dataset anlegen $DataSet = New-Object -TypeName System.Data.DataSet #Dataset mit dem Ergebniss der SQL Abfrage "füllen" $OracleDataAdapter.Fill($DataSet) #Daten ausgeben $DataSet.Tables[0]
Alternativ mit Reader abfragen: (siehe auch msdn oracledatareader )
$reader=$OracleCommand.ExecuteReader() # Struktur des Ergebniss Records anzeigen for ($i=0;$i -lt $reader.FieldCount;$i++) { Write-Host "Position ::" $i "::" $reader.GetName($i)"::" $reader.GetDataTypeName($i) } # Ausgeben der Ergebnisse # auf die richtige Nummerierung achten while ($reader.read()) { $empno = $reader.GetInt32(0) # Reader "härten", falls ename null sein sollte if ( $reader.IsDBNull(1) ) { $ename= "" } else { $ename = $reader.GetString(1) } $hiredate= $reader.GetDateTime(4) Write-Host "$ename $empno $hiredate" }
Datenbank Verbindung auch wieder schließen .-)!
#Verbindung wieder schließen $OracleDataAdapter.Dispose() $OracleCommand.Dispose() $OracleConnection.Close()
Quellen:
Oracle .Net DB Beispiele
Objekt Referenzen:
windows/powershell_oracle_db_abfragen.txt · Zuletzt geändert: 2012/08/04 19:00 von gpipperr