Benutzer-Werkzeuge

Webseiten-Werkzeuge


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:

    • 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"
}
#Verbindung wieder schließen
$OracleDataAdapter.Dispose()
$OracleCommand.Dispose()
$OracleConnection.Close()

Quellen:

Oracle .Net DB Beispiele

Objekt Referenzen:

Cookies helfen bei der Bereitstellung von Inhalten. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Weitere Information
"Autor: Gunther Pipperr"
windows/powershell_oracle_db_abfragen.txt · Zuletzt geändert: 2012/08/04 19:00 von gpipperr