Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Oracle Connection


Xcalibur - Do 28.01.10 15:38
Titel: Oracle Connection
Hey Leute,

Ich möchte mich mit meiner Oracle Datenbank verbinden, aber ich bekomme immer folgende Fehlermeldung.

ORA-06401: NETCMN: ungültiger Treiberbezeichner

Hier mein Code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
using System.Data.OracleClient;
...
OracleConnection conn = new OracleConnection();
            conn.ConnectionString =
                          "Data Source=...;"+
                          "User id=...;"+
                          "Password=...;";
            conn.Open();

(Ja ich habe nat. statt den ... die richtigen Werte eingetragen und nur für den Beitrag durch Punkte ersetzt)

Fehlt hier noch ein Parameter im ConnectionString? Oder muss ich noch einen DB Traiber installieren?

Gruß Gernot


ene - Do 28.01.10 16:07

Moin,

ich hab auch so einige Erfahrungen mit Oracle gemacht, es hängt sehr stark vom verwendeten Treibe ab. Beim OracleClient sieht der ConnString bei mir so aus:


C#-Quelltext
1:
2:
3:
4:
string strCon = "Data Source=(DESCRIPTION=" _
  + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=NameOderIP)(PORT=1521)))" _
        + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DBName)));" _
        + "USER ID=User;Password=PW;"


Ansonsten müsstest du schon verraten, welche Version von Oracle ihr verwendet und welchen Treiber. Oder du schaust dich hier [http://www.connectionstrings.com/oracle] mal um.


Xcalibur - Do 28.01.10 16:25

So sah der String bei mir auch aus als ich odp.net verwendet habe.
Wir verwenden die Version 9.2.0 und ich habe jetzt herausgefunden dass alle anderen Anwendungen Java Applikationen sind und demnach auch mit jdbc arbeiten.

Danke für deinen ConnString und den Link aber es funktioniert leider bei keinem -> also ich denke der TReiber ist hier einfach nicht installiert.

Gibt es die Möglichkeit einen Treiber nur als dll in mein Programm einzubinden nud mitzuliefern anstatt ihn auf dem rechner installieren zu müssen?


ene - Do 28.01.10 16:45

So tief musst ich mich zum Glück noch nicht mit Oracle beschäftigen. Die DLL muss mindestens registriert sein. Wobei auf meinen Rechnern auch der OracleClient installiert ist. Das reicht dafür. :(


Xcalibur - Do 28.01.10 17:07

OK dann werd ichs einfach mal installieren müssen.

Gibt es irgeneine minimale Installation den dieses ODP.NET Entwicklertool ist ja ein riesiges Teil mit vielen Sachen die ich einfach nicht brauche und die Clients sind auch nicht gerade klein.

Kann mir vll jemand sagen was ich Minimal installieren muss um das zum laufen zu bringen?


ene - Fr 29.01.10 07:25

Umstellen auf MS Oracle ODBC ;) SCNR


JüTho - Fr 29.01.10 14:30

user profile iconene hat folgendes geschrieben Zum zitierten Posting springen:
Umstellen auf MS Oracle ODBC ;) SCNR

Ich hoffe, Gernot versteht das nicht falsch und steigt nicht wirklich auf ODBC um - das wäre der größte Blödsinn, den er machen könnte. Auch Oledb und der Oracle-Client, der von MS standardmäßig zu NET hinzugefügt wurde, sind abzulehnen.

@Gernot
Schau einmal unter connectionstrings [http://www.connectionstrings.com/default.aspx] nach, welche NET-Provider für Oracle angeboten werden und wie der ConnectionString auszusehen hat. Vielleicht gibt es dort auch etwas, das deinen Ansprüchen an einfache Installation und Nutzung entspricht.

Jürgen


Xcalibur - Mo 01.02.10 08:33

Ich habe mich auf der Seite mal durch die Provider gelesen. Also die MS Treiber sollte ich meiden oder wie war das gemeint?

@ JüTho Tja den ich wollte eig einfach unter Systemsteuerung -> Verwaltung -> ODBC
einiges an Treiber ausprobieren. Sind das jetzt genau die die ich nicht benutzen sollte?
(Also ich habs noch nicht probiert weil ich dafür erst Berechtigungen vom Admin anfordern muss und sowas dauert leider bei uns;) aber ich ich gleich weiß dass es Blödsinn sit dann geh ich gleich einen anderen Weg)
Welchen Provider schlägst du vor?

Gruß Gernot


JüTho - Mo 01.02.10 09:49

user profile iconXcalibur hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe mich auf der Seite mal durch die Provider gelesen. Also die MS Treiber sollte ich meiden oder wie war das gemeint?

Richtig. Vor ein paar Tagen habe ich in einem anderen Forum einen ausdrücklichen Hinweis darauf gelesen, dass der fehlerhaft ist und von MS nicht mehr gepflegt wird.

user profile iconXcalibur hat folgendes geschrieben Zum zitierten Posting springen:
@ JüTho Tja den ich wollte eig einfach unter Systemsteuerung -> Verwaltung -> ODBC
einiges an Treiber ausprobieren. Sind das jetzt genau die die ich nicht benutzen sollte?

Richtig. ODBC und auch Oledb sind nur Notlösungen, wenn es wirklich nichts Besseres gibt.

user profile iconXcalibur hat folgendes geschrieben Zum zitierten Posting springen:
Welchen Provider schlägst du vor?

* Oracle Data Provider ODP.NET: Oracle.DataAccess.Client Namespace
* dotConnect for Oracle (früher CoreLab): Devart.Data.Oracle Namespace

Gruß Jürgen


Xcalibur - Mo 01.02.10 10:52

OK dann werd ich mit ODP.NET versuchen damithab ich schon gearbeitet.
Jedoch ist mir noch nicht genau klar was ich alles brauche. Also ich hab damals das ganze Developer Tool runtergeladen und da war einfach zuviel dabei.

Jetzt hab ich das hier gefunden:
Oracle 10g ODAC 10.1.0.4.0
Oracle Data Provider for .NET 10.1.0.4.0
Oracle ODBC Driver 10.1.0.3.1
Oracle Provider for OLE DB 10.1.0.4.0
Oracle Objects for OLE 10.1.0.5.2
Oracle Services for Microsoft Transaction Server 10.1.0.4.0

ok das werd ich auf dem PC wo ich programmmiere mal installieren. Was mir allerdings noch nicht ganz klar ist.
Muss ich das ganze Zeug auch auf jedem CLient installieren auf dem die Software dann laufen soll.
Reicht z.b. nur der Provider aus?
Und kann ich das ODP.NET Zeug irgendwie so einbinden dass man am Client nichts mehr dazuinstallieren muss.

Gruß Gernot


ene - Mo 01.02.10 11:19

Normalerweise sollte dafür auch der Oracle Teiber reichen. Schau mal hier:

http://www.oracle.com/technology/tech/windows/odpnet/index.html


Xcalibur - Di 02.02.10 11:10

Danke für eure Hilfe. Auf dem Server läuft es nun und ich kann mich verbinden.
Ich werde den DB Zugriff nur auf dem Server laufen lassen und umgehe somit das die CLient auf die DB müssen :)
Gruß Gernot