tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
Seite 1 von 2 1 2 Letzte
  1. #1
    Benutzerbild von deusfalsus
    deusfalsus deusfalsus ist offline Mitglied Gold deusfalsus hat eine blütenweiße Weste
    Registriert seit
    Jan 2003
    Ort
    Jena (Thüringen)
    Beiträge
    249
    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)

  2. #2
    Benutzerbild von Norbert Eder
    Norbert Eder Norbert Eder ist offline Moderator Norbert Eder ist einfach richtig nett Norbert Eder ist einfach richtig nett
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.081
    Blog-Einträge
    51
    Wieso verwendest du nicht ODP.NET?

  3. #3
    Benutzerbild von deusfalsus
    deusfalsus deusfalsus ist offline Mitglied Gold deusfalsus hat eine blütenweiße Weste
    Registriert seit
    Jan 2003
    Ort
    Jena (Thüringen)
    Beiträge
    249
    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:
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    Dim conn As Odbc.OdbcConnection
    Dim da As Odbc.OdbcDataAdapter
    Dim ds As Data.DataSet
    Dim tab As Data.DataTable
    Dim sConnString As String = _
           "DSN=xxx_xx_xxxxx;" & _
           "Uid=xxxxx;" & _
           "Pwd=xxxxx"
     
    conn = New Odbc.OdbcConnection(sConnString)
    conn.Open()
    sql = "SELECT ....;"
    da = New Odbc.OdbcDataAdapter(sql, conn)
    ds = New DataSet()
    da.Fill(ds)
    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.

  4. #4
    Benutzerbild von Nico Graichen
    Nico Graichen Nico Graichen ist offline gemballa Nico Graichen kann auf vieles stolz sein Nico Graichen kann auf vieles stolz sein Nico Graichen kann auf vieles stolz sein Nico Graichen kann auf vieles stolz sein Nico Graichen kann auf vieles stolz sein Nico Graichen kann auf vieles stolz sein
    tutorials.de Premium-User
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.293
    Blog-Einträge
    34
    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

  5. #5
    Benutzerbild von deusfalsus
    deusfalsus deusfalsus ist offline Mitglied Gold deusfalsus hat eine blütenweiße Weste
    Registriert seit
    Jan 2003
    Ort
    Jena (Thüringen)
    Beiträge
    249
    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.

  6. #6
    Benutzerbild von Norbert Eder
    Norbert Eder Norbert Eder ist offline Moderator Norbert Eder ist einfach richtig nett Norbert Eder ist einfach richtig nett
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.081
    Blog-Einträge
    51
    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.

  7. #7
    Benutzerbild von deusfalsus
    deusfalsus deusfalsus ist offline Mitglied Gold deusfalsus hat eine blütenweiße Weste
    Registriert seit
    Jan 2003
    Ort
    Jena (Thüringen)
    Beiträge
    249
    Zitat Zitat von Norbert Eder Beitrag anzeigen
    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.

  8. #8
    Benutzerbild von Norbert Eder
    Norbert Eder Norbert Eder ist offline Moderator Norbert Eder ist einfach richtig nett Norbert Eder ist einfach richtig nett
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.081
    Blog-Einträge
    51
    Zitat Zitat von deusfalsus Beitrag anzeigen
    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 Beitrag anzeigen
    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 Beitrag anzeigen
    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.

  9. #9
    Benutzerbild von deusfalsus
    deusfalsus deusfalsus ist offline Mitglied Gold deusfalsus hat eine blütenweiße Weste
    Registriert seit
    Jan 2003
    Ort
    Jena (Thüringen)
    Beiträge
    249
    Zitat Zitat von Norbert Eder Beitrag anzeigen
    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 Beitrag anzeigen
    Ad b) Zuviele Clients, Systemvorgaben etc?
    Ist zwar irrelevant, aber es liegt an der Zahl der Clients (ca 5000).

    Zitat Zitat von Norbert Eder Beitrag anzeigen
    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 Beitrag anzeigen
    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.

  10. #10
    Benutzerbild von Norbert Eder
    Norbert Eder Norbert Eder ist offline Moderator Norbert Eder ist einfach richtig nett Norbert Eder ist einfach richtig nett
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.081
    Blog-Einträge
    51
    Zitat Zitat von deusfalsus Beitrag anzeigen
    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 Beitrag anzeigen
    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 Beitrag anzeigen
    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à.

  11. #11
    Benutzerbild von deusfalsus
    deusfalsus deusfalsus ist offline Mitglied Gold deusfalsus hat eine blütenweiße Weste
    Registriert seit
    Jan 2003
    Ort
    Jena (Thüringen)
    Beiträge
    249
    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?

  12. #12
    Benutzerbild von Norbert Eder
    Norbert Eder Norbert Eder ist offline Moderator Norbert Eder ist einfach richtig nett Norbert Eder ist einfach richtig nett
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.081
    Blog-Einträge
    51
    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 :
    1
    
    SELECT * FROM irgendwas.Tabellenname
    vorkommt.

  13. #13
    Benutzerbild von deusfalsus
    deusfalsus deusfalsus ist offline Mitglied Gold deusfalsus hat eine blütenweiße Weste
    Registriert seit
    Jan 2003
    Ort
    Jena (Thüringen)
    Beiträge
    249
    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?

  14. #14
    Benutzerbild von FwDonnerbalken
    FwDonnerbalken FwDonnerbalken ist offline Mitglied Brokat FwDonnerbalken ist ein sehr geschätzer Mensch
    Registriert seit
    May 2005
    Beiträge
    321
    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!

  15. #15
    Benutzerbild von Norbert Eder
    Norbert Eder Norbert Eder ist offline Moderator Norbert Eder ist einfach richtig nett Norbert Eder ist einfach richtig nett
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.081
    Blog-Einträge
    51
    Zitat Zitat von FwDonnerbalken Beitrag anzeigen
    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.

Ähnliche Themen

  1. Verbindung MS-Accsess nach Oracle via ODBC
    Von oracle-dreamer im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 07.05.07, 14:19
  2. ODBC Verbindung zu Firebird
    Von Djunix im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 15.03.07, 09:25
  3. Verbindung zu Oracle-Datenbank
    Von WIK-Lars im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 27.10.06, 10:56
  4. [c++ .Net] Datenbank verbindung aufbauen
    Von Halcom im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 15.06.06, 12:54
  5. Antworten: 1
    Letzter Beitrag: 16.09.04, 14:11

Lesezeichen

Lesezeichen