|
|
| |
| |
Hallo und herzlich willkommen! Tutorials.de ist eine Hilfe-Community mit dem Motto User helfen Usern. Als Gast verfügst Du über Schreibrechte in unseren Foren und Blogs. Du kannst dich aber gerne auch kostenlos registrieren und Teil unserer Gemeinschaft werden! Viel Spaß & Erfolg bei der Vermehrung deines Wissens :-)
|
|
|
 |
|
|
|
|
|
|
27.05.08, 13:21
|
#1 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2003
Ort: Jena (Thüringen)
Beiträge: 241
Renommee-Modifikator: 0
|
ODBC Verbindung zu Oracle Datenbank aufbauen
Hallo zusammen,
alles Suchen und Finden hat mir leider nicht geholfen.
Wie genau kann ich unter Verwendung einer vorhandenen ODBC-Datenquelle (Windows, System-DSN) mit VB.Net (MS VB 2008 Express) auf jene Oracle-Datenbank zugreifen?
Ich möchte z.B. eine ListBox mit einem Abfrageergebnis befüllen.
Geändert von deusfalsus (27.05.08 um 13:58 Uhr).
|
27.05.08, 15:30
|
#2 (permalink)
|
|
Moderator
Registriert seit: Feb 2004
Ort: Österreich / Graz
Beiträge: 5.097
Renommee-Modifikator: 34 
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Wieso verwendest du nicht ODP.NET?
|
27.05.08, 15:42
|
#3 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2003
Ort: Jena (Thüringen)
Beiträge: 241
Renommee-Modifikator: 0
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Weil ich nicht weiß, wovon Du da schreibst.
Ich dachte, es wäre sinnvoll, den System-DSN zu verwenden, da dieser auf allen Client-PCs hier vorhanden ist.
Mein Ansatz derzeit:
|
vb Code:
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
| Dim conn As Odbc.OdbcConnection Dim da As Odbc.OdbcDataAdapter Dim tab As Data.DataTable Dim sConnString As String = _ conn = New Odbc.OdbcConnection(sConnString) da = New Odbc.OdbcDataAdapter(sql, conn)
|
|
Geht noch weiter, aber bereits beim fill bekomme ich die Meldung "ERROR [42S02] [Oracle][ODBC][Ora]ORA-00942: Tabelle oder View nicht vorhanden".
Am sql-String kanns nicht liegen. Das ist extra zum Testen ein ganz einfacher und auch überprüft.
Für besser Ansätze bin ich offen.
|
27.05.08, 20:49
|
#4 (permalink)
|
|
.NET / ITIL / SQL
Registriert seit: Dec 2003
Ort: Pulheim (NRW)
Beiträge: 3.136
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Was Norbert meint ist der Oracle DataProvider for .NET.
Quasi das was MS für den SQL Server im .NET-Framework mitliefert hier speziell für Oracle.
Den DataProvider kannst du bei der Client-Installation von Oracle auswählen und muss bei deinem Projekt anschließend die ansprechenden Assemblies referenzieren.
die Dokus dafür gibts unter http://www.oracle.com/technology/doc...net/index.html
__________________
Grüße Nico
----------------------
Xing
----------------------
Zitat:
|
Zitat von unbekannt
Es ist nicht das Essen zwischen Weihnachten und Neujahr, das dick macht, sondern das Essen zwischen Neujahr und Weihnacht
|
Zitat:
|
Zitat von Mark Twain (1835-1910)
Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
|
Zitat:
|
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison
|
|
27.05.08, 22:05
|
#5 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2003
Ort: Jena (Thüringen)
Beiträge: 241
Renommee-Modifikator: 0
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Den Oracle DataProvider for .NET werd ich mir mal anschauen.
Ist davon abgesehen irgend etwas mit meinem jetzigen Ansatz faul? Ist von der Variante generell abzuraten? Wenn ja: Warum?
Muss ich für den Oracle DataProvider auf den Clients, auf denen mein Programm mal laufen soll, zusätzliche Installationen vornehmen? Der DSN ist nämlich überall vorhanden und ich dachte, das käme mir zu Pass.
|
28.05.08, 08:52
|
#6 (permalink)
|
|
Moderator
Registriert seit: Feb 2004
Ort: Österreich / Graz
Beiträge: 5.097
Renommee-Modifikator: 34 
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Was ODP.NET ist, hätte sich leicht durch eine Google-Query herausfinden lassen.
ODP.NET ist auf die Verwendung durch .NET in Verbindung mit einem Oracle-DBMS zugeschnitten. Daher ist das Teil auch wesentlich performanter. Zudem gibt's im Falle eines Fehlers auch aussagekräftigere Meldungen als über ODBC.
ODP.NET läuft nur auf Rechnern, auf denen auch der Client installiert ist (muss aber wohl generell bei Oracle der Fall sein). D.h. es wäre möglicherweise (nicht nicht schlauerweise bereits installiert) nachinstalliert werden. D.h. das Teil greift dann auch auf die installierte Konfiguration zurück.
|
28.05.08, 09:36
|
#7 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2003
Ort: Jena (Thüringen)
Beiträge: 241
Renommee-Modifikator: 0
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Zitat:
Zitat von Norbert Eder
Was ODP.NET ist, hätte sich leicht durch eine Google-Query herausfinden lassen.
|
Wenn ich etwas nicht kenne, kann ich auch nicht bei Google danach suchen. Also spar Dir Deine selbstgefälligen Bemerkungen bitte.
Der ODP.Net kommt für mich nicht infrage, da er a) bei mir nicht vorhanden ist und ich b) nicht auf allen Clients nachinstallieren kann.
Kann mir denn jemand erklären, wie ich mittels ODBC, bzw System-DSN auf meine Datenbank komme? Wo liegt der Fehler in meinem Code (s.o.)?
Was genau sagt mir die Fehlermeldung?
Wenn ich im Debug-Modus mir den Inhalt von "conn" anschaue, ist "Database" immer leer. Allerdings kann ich diesen Wert nicht belegen (zumindest weiß ich nicht, wie). Über den Connection-String kommts nicht an und direkt per conn.Database="..." erhalte ich die Meldung, der Wert sei readonly.
|
28.05.08, 10:12
|
#8 (permalink)
|
|
Moderator
Registriert seit: Feb 2004
Ort: Österreich / Graz
Beiträge: 5.097
Renommee-Modifikator: 34 
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Zitat:
Zitat von deusfalsus
Wenn ich etwas nicht kenne, kann ich auch nicht bei Google danach suchen. Also spar Dir Deine selbstgefälligen Bemerkungen bitte.
|
Stimmt, ODP.NET reicht nicht aus, um ihn als Suchbegriff in die Suchmaschine deiner Wahl einzugeben. Ich vergaß.
Zitat:
Zitat von deusfalsus
Der ODP.Net kommt für mich nicht infrage, da er a) bei mir nicht vorhanden ist und ich b) nicht auf allen Clients nachinstallieren kann.
|
Ad b) Zuviele Clients, Systemvorgaben etc?
Zitat:
Zitat von deusfalsus
Kann mir denn jemand erklären, wie ich mittels ODBC, bzw System-DSN auf meine Datenbank komme? Wo liegt der Fehler in meinem Code (s.o.)?
Was genau sagt mir die Fehlermeldung?
Wenn ich im Debug-Modus mir den Inhalt von "conn" anschaue, ist "Database" immer leer. Allerdings kann ich diesen Wert nicht belegen (zumindest weiß ich nicht, wie). Über den Connection-String kommts nicht an und direkt per conn.Database="..." erhalte ich die Meldung, der Wert sei readonly.
|
Dein Connectionstring sollte eigentlich passen. Kann es sein, dass du den DSN-Wert falsch eingetragen hast bzw. den falschen Wert nimmst?
Hier kannst du dir auch noch ein Code-Snippet zu dem Thema ansehen. Vielleicht hilft dir das weiter.
|
28.05.08, 10:30
|
#9 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2003
Ort: Jena (Thüringen)
Beiträge: 241
Renommee-Modifikator: 0
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Zitat:
Zitat von Norbert Eder
Stimmt, ODP.NET reicht nicht aus, um ihn als Suchbegriff in die Suchmaschine deiner Wahl einzugeben. Ich vergaß.
|
Was soll das? Wenn ich etwas nicht kenne, kann ich nicht danach suchen!
Soll ich bei der Suchmaschine meiner Wahl etwa "der Begriff den alle außer mir kennen" eingeben? Bitte erst überlegen, dann Großkotzerei abschalten und dann schreiben.
Ich gehe davon aus, dass Leute, die hier antworten, auf dem Gebiet besser sind als ich. Sonst bräuchte ich ja nicht fragen. Du brauchst Deine Überlegenheit also nicht dauernd raushängen lassen.
Zitat:
Zitat von Norbert Eder
Ad b) Zuviele Clients, Systemvorgaben etc?
|
Ist zwar irrelevant, aber es liegt an der Zahl der Clients (ca 5000).
Zitat:
Zitat von Norbert Eder
Dein Connectionstring sollte eigentlich passen. Kann es sein, dass du den DSN-Wert falsch eingetragen hast bzw. den falschen Wert nimmst?
|
Als DSN-Wert nehme ich den Bezeichner aus Verwaltung\Datenquellen\SystemDSN.
In einem VB-Makro an anderer Stelle funktioniert es damit. Ist aber VBA und nicht .NET
Zitat:
Zitat von Norbert Eder
Hier kannst du dir auch noch ein Code-Snippet zu dem Thema ansehen. Vielleicht hilft dir das weiter.
|
Da ich nicht mit C# arbeite, sondern VB, komme ich damit nicht weiter.
|
28.05.08, 10:40
|
#10 (permalink)
|
|
Moderator
Registriert seit: Feb 2004
Ort: Österreich / Graz
Beiträge: 5.097
Renommee-Modifikator: 34 
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Zitat:
Zitat von deusfalsus
Was soll das? Wenn ich etwas nicht kenne, kann ich nicht danach suchen!
Soll ich bei der Suchmaschine meiner Wahl etwa "der Begriff den alle außer mir kennen" eingeben? Bitte erst überlegen, dann Großkotzerei abschalten und dann schreiben.
Ich gehe davon aus, dass Leute, die hier antworten, auf dem Gebiet besser sind als ich. Sonst bräuchte ich ja nicht fragen. Du brauchst Deine Überlegenheit also nicht dauernd raushängen lassen.
|
Ersetze den Teil "der Begriff den alle außer mir kennen" mit "ODP.NET", der von mir auch genannt wurde und schon hättest du nachlesen können, was das ist.
Ergo bist du mit überlegen und eventuellem Nachlesen an der Reihe
Zitat:
Zitat von deusfalsus
Ist zwar irrelevant, aber es liegt an der Zahl der Clients (ca 5000).
|
Ist nicht irrelevant. Hättest du als Antwort 2 gegeben, dann wäre ODP.NET durchaus eine Alternative. Bei 5000 natürlich angesichts des Rollout-Aufwandes eher nicht.
Zitat:
Zitat von deusfalsus
Da ich nicht mit C# arbeite, sondern VB, komme ich damit nicht weiter.
|
Mit dem Reflector kannst du dir beispielsweise C# Code auch als VB.NET Code (oder MSIL, C++.NET etc.) anzeigen lassen. Dies hilft dir auch Source zu übersetzen und für dich lesbarer zu machen. Dazu einfach kopieren, eine ClassLibrary anlegen, Klasse anlegen, einfügen, kompilieren und die Assembly anschließend im Reflector öffnen und "Anzeigeprogrammiersprache" auswählen. Voilà.
|
28.05.08, 11:23
|
#11 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2003
Ort: Jena (Thüringen)
Beiträge: 241
Renommee-Modifikator: 0
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Ich bin jetzt auf dem Stand, dass die Connection wohl steht (sonst würde "conn" nicht u.a. die Serverversion erkennen).
Das Problem ist wohl, dass die Tabelle/n nicht bekannt ist/sind.
Muss ich die irgendwo explizit deklarieren? Wie?
|
28.05.08, 11:27
|
#12 (permalink)
|
|
Moderator
Registriert seit: Feb 2004
Ort: Österreich / Graz
Beiträge: 5.097
Renommee-Modifikator: 34 
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Die Tabellen definierst du ja in deinen DML-Statements. Das jedoch sein kann ist, dass du ein Schema angeben musst. Am besten die SQL-Anweisungen aus dem VB-Script, welches dir zur Verfügung steht, überprüfen ob dort etwas wie:
|
Code:
|
SELECT * FROM irgendwas.Tabellenname
|
vorkommt.
|
28.05.08, 11:51
|
#13 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2003
Ort: Jena (Thüringen)
Beiträge: 241
Renommee-Modifikator: 0
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Also mein SQL-String ist nach folgendem Schema gestrickt:
SELECT Feldname FROM Tabellenname WHERE ...
Habs auch probiert mit:
SELECT Tabellenname.Feldname FROM Tabellenname WHERE ...
Wenn ich es folgender Weise versuche:
SELECT 'Tabellenname'.'Feldname' FROM 'Tabellenname' WHERE ...
Kommt die Meldung "Schlüsselwort FROM nicht an erwarteter Stelle gefunden"
Setze ich Klammern
SELECT ('Tabellenname'.'Feldname') FROM 'Tabellenname' WHERE ...
Kommt die Meldung "rechte Klammer fehlt"
Bei
SELECT * FROM irgendwas.Tabellenname
Was müsste denn für "irgendwas" stehen?
|
28.05.08, 12:30
|
#14 (permalink)
|
|
Mitglied Brokat
Registriert seit: May 2005
Beiträge: 321
Renommee-Modifikator: 11
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Wow, jetzt habe ich mich durch diesen gesamten Threadmarathon gelesen...
gut, ich selbst ziehe in einer Anwendung ebenfalls Daten aus einer Oracle-Datenbank. Dieses "irgendwas" bezeichnet ein Schema in Oracle. Das was man bei MSSQL etc. aus Datenbank versteht ist in Oracle allgemein als Schema zu verstehen. Da man soweit ich weiß bei der Verbindung kein Standardschema angeben kann, muss man den Schemanamen durch einen Punkt getrennt dem Tabellennamen vorranstellen.
Soweit ich mich erinnere (ich habe das jedoch noch nie gemacht) kann man dem Datenbankbenutzer ein Standardschema angeben. Damit sollte man dann ohne diesen vorrangestellten Schemanamen auf die TAbellen zugreifen können.
Hinweis: Wenn du Tool wie den kostenlosen SQL Developer von Oracle benutzt, organisiert es diese Schemanamen als Benutzernamen. Schau es dir mal an!
__________________
Gruß,
Sebastian
Mein XING Profil
Hilfreiche Antworten bitte bewerten!
|
28.05.08, 13:18
|
#15 (permalink)
|
|
Moderator
Registriert seit: Feb 2004
Ort: Österreich / Graz
Beiträge: 5.097
Renommee-Modifikator: 34 
|
AW: ODBC Verbindung zu Oracle Datenbank aufbauen
Zitat:
Zitat von FwDonnerbalken
Dieses "irgendwas" bezeichnet ein Schema in Oracle. Das was man bei MSSQL etc. aus Datenbank versteht ist in Oracle allgemein als Schema zu verstehen.
|
Das ist nicht richtig. Ein Schema ist eine Sammlung von Datenbanken und allem was dazu gehört. Ist (eventuell abhängig von einigen Funktionalitäten) gleichzusetzen mit dem Schema beim MSSQL.
Das heißt auch weiters zur Fehlerfindung: Wenn der User mit dem du dich anmeldest kein Defaultschema zugewiesen bekam, dann kannst du auf die gewollte Datenbank nicht zugreifen, da sie schlichtweg nicht gefunden wird (weil einem Schema zugewiesen).
Diese muss so ausgewählt werden. Wie du das unter Oracle machen kannst, ohne die Datenbank im ConnectionString anzugeben kann ich dir jetzt ad hoc nicht sagen. Oracle is not my home and castle.
|
|
| Themen-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
|
 |
|
»
Neue Tutorials
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
»
Letzte News
|
 |
|
|
|
|
|
|
|
|
|
|
»
Tools
|
 |
|
|
|
|
|
»
Neue Links
|
 |
|
|
|
|
(Cinema 4D-Objekte)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
»
Jobs @ tutorials.de
|
 |
|
|
|
|
|
|
|
|
|
|