Keine Oracle Datenquelle im Datenquellenassistenten

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von chris56.

    Keine Oracle Datenquelle im Datenquellenassistenten

    Guten Abend,

    bisher habe ich problemlos über eine OleDbConnection mit dem Provider MSDAORA auf eine Oracle Datenbank zugegriffen. Ich habe den Microsoft eigenen Treiber genommen, um meine Anwendungen so einfach wie möglich auch auf anderen Rechnern laufen lassen zu können. Jetzt wollte ich im Visual Studio 2010 eine Datenquelle einrichten um für die DBExtensions ein typisiertes Datenset anzulegen. Ich bekomme aber im Assistenten nur Access und den MSSQL Server als Datenquellen zur Auswahl, obwohl ich dem Projekt auch schon Verweise auf verschiedenste Oracle DLLs hinzugefügt habe. Wobei ich ja eigentlich dachte, dass es auch über OLEDB gehen würde.

    Auf dem Rechner ist im Übrigen eine Oracle 11 Datenbank installiert.

    Kann mir jemand sagen, was ich falsch mache? Oder geht das nicht über die Microsoft Treiber und muss ich also die .NET Treiber von Oracle installieren?

    Gruß, Chris

    chris56 schrieb:

    Jetzt wollte ich im Visual Studio 2010 eine Datenquelle einrichten um für die DBExtensions ein typisiertes Datenset anzulegen.

    Brauchst du doch garnet.
    Ich empfehle eh immer, erst ohne DB zu entwickeln, und eine DB später unterzuschieben.
    Wäre dann natürlich einfacher, wenn man Assistenten nutzen könnte, die dann aus der DB das Dataset generieren. Aber tatsächlich sind als erstes die ganzen generierten TableAdapter aus dem Dataset-Designer wieder rauszuschmeißen, denn die Dinger sind irrsinnig und unnötig aufgeblasen.

    Zum anneren verstehe ich nicht, wie du mit OleDB Daten abrufen kannst, aber trotzdem springt der Assistent nicht an.
    Jedenfalls die DbExtensions brauchen nur eine DbProviderFactory und einen ConnectionString, den Rest konfigurieren sie sich selber. Und als DbProviderFactory wäre in deim Fall wohl die OleDbProviderFactory zuständig.

    Glaubich jdfs - mit Oracle hatte ich bisher nix zu tun.

    Oder gibt es einen Weg, im VSE über direkten Code die notwendige Datenbankverbindung anzulegen?
    Das ist genau das Konzept der DbExtensions. Wie gesagt: mit Oracle noch nicht getestet, aber mit einigen annern Providern geht das auf.

    ErfinderDesRades schrieb:

    aber trotzdem springt der Assistent nicht an

    Weil die Assistenten bei Express halt auf das mitgelieferte MS Zeugs beschränkt sind ;) Aber man kann ja auch ohne Assistenten arbeiten. Ich persönlich würde sowieso lieber versuchen das ganze mit dem Entitiy Framework zu machen. In der Version 5 wird jetzt ja endlich auch das nchträgliche (automatische) Updaten der DB im Code-First Modus unterstützt.

    picoflop schrieb:

    Aber man kann ja auch ohne Assistenten arbeiten.

    Kann ich denn ohne den Assistenten dem Projekt eine Datenbankverbindung hinzufügen, die ich dann z.B. für einen TableAdapter oder ein Entity Data Model nutzen kann? Es wäre ja schon schön, wenn ich das DataSet mit Drag und Drop erstellen könnte.

    picoflop schrieb:

    Ich persönlich würde sowieso lieber versuchen das ganze mit dem Entitiy Framework zu machen.

    Was ist denn der Vorteil vom Entitiy Framework gegenüber dem Arbeiten mit DataSets? Hast du einem Lesetipp zum Einstieg ins Entitiy Framework, auch ein bisschen über die Hintergründe?

    ErfinderDesRades schrieb:

    Ich empfehle eh immer, erst ohne DB zu entwickeln, und eine DB später unterzuschieben.

    Mir gefällt dein Ansatz, erst ohne DB zu entwickeln oder auch einfach XML Dateien für die Datenspeicherung zu benutzen. Nur soll ich kleine Anwendungen für unsere Kunden programmieren, um Daten aus einer Oracle ERP Datenbank abzurufen und teilweise auch zu verändern. Die Datenbank ist also schon da und ich bin darauf angewiesen, eine Verbindung zu Stande zu bekommen.

    ErfinderDesRades schrieb:

    Zum anneren verstehe ich nicht, wie du mit OleDB Daten abrufen kannst, aber trotzdem springt der Assistent nicht an.

    Im Code geht das ganz einfach über einen DataAdapter:

    Quellcode

    1. Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM T", "Provider=MSDAORA;Data Source=xxx;User Id=xxx;Password=xxx;"

    ErfinderDesRades schrieb:

    Jedenfalls die DbExtensions brauchen nur eine DbProviderFactory und einen ConnectionString, den Rest konfigurieren sie sich selber.

    Dann werde ich mal versuchen, ob ich eine deiner Beispielprojekte auf meine Oracle Datenbank ummünzen kann.

    picoflop schrieb:


    Viel habe ich von dem Blog ehrlich gesagt nicht verstanden. Ich kann mir vor allem noch nicht so recht vorstellen, wie das ganze genau aufgebaut ist und funktioniert. So tief stecke ich leider auch noch nicht in der Materie drin, dass mir all die Begriffe etwas sagen.

    Brauche ich denn für das Entity Framework andere Datenbanktreiber als für ADO.NET DataSets (so habe ich den Blog verstanden)? Wenn ich im VSE ein ADO.NET Entity Data Model anlege, greift es doch auf die gleichen Datenbankverbindungen zu wie auch ein DatSet, oder? Oder gibt es noch andere Entity Data Models außer ADO.NET Entity Data Models? Ich würde es ja gerne mal ausprobieren, wenn ich wüsste, wie ich die Verbindung zu meiner Oracle Datenbank hinbekomme.
    An meinem Arbeitsplatz programmiere ich öfter mal für Oracle Datenbanken.
    Erst hatte ich die OLE Anbindung verwendet. Inzwischen bin ich doch
    zu Oracle-ClientAccess (ODP) gewechselt.
    Das habe ich ohne Assistent gemacht. Dort habe ich die VS2008 Pro.
    Zuhause habe ich leider nur Express, somit kann ich leider nicht richtig
    vergleichen wie ich mit Express auf Oracle zugreifen würde.
    Sollte aber auch nicht viel anders sein als wie ohne Assistent.
    Falls es dich interessiert, könnte ich morgen mal schauen, wie ich es
    im Geschäft gemacht hatte.

    Lightsource schrieb:

    Falls es dich interessiert, könnte ich morgen mal schauen, wie ich es im Geschäft gemacht hatte.

    Das wäre nett, bin selbst nämlich immer noch nicht weiter gekommen. Obwohl ich viel herumprobiert habe.

    Lightsource schrieb:

    Inzwischen bin ich doch zu Oracle-ClientAccess (ODP) gewechselt.

    Darf ich fragen, warum? Ich war ja bis jetzt mit OLE ganz zufrieden, habe aber das Gefühl, dass es auf Dauer doch nicht das Richtige sein mag.
    Ich weiß auch nicht mehr so recht, was unsere Motivation war.
    Da war doch irgend etwas mit einem Microsoft-Oracle-Treiber, der
    nicht mehr weiter entwickelt wird. Und dann denke ich, dass Oracle
    am ehesten weiß, wie man deren Datenbanken anspricht.

    Allerdings gibt es auch einen Nachteil. Wir stellen gerade von
    Oracle 10 auf 11 um. Leider sind die Treiber nicht kompatibel.
    Auch zwischen 32 und 64 Bit muss man leider unterscheiden.
    Unser Server hat jetzt 64Bit, mein Rechner und mein VS arbeitet
    noch mit 32Bit. Als ich dann mal einen Dienst, der problemlos
    auf dem 32Bit Server lief, neu für das 64Bit System kompilieren
    wollte, konnte er nicht mehr gestartet werden. Die wirkliche
    Ursache haben wir noch nicht gefunden.
    Verweis: Oracle.DataAccess.dll Download bei Oracle
    DTB ist bei mir eine Datenbankklasse
    Dset ist ein Dataset

    Das ist hier kein Copy & Paste Kode, sondern nur ein Anhaltpunkt.

    VB.NET-Quellcode

    1. Imports OAC = Oracle.DataAccess.Client
    2. Private Verbindung_ As New OAC.OracleConnection
    3. Private DatenAdapter_ As New OAC.OracleDataAdapter
    4. Private Command_ As New OAC.OracleCommand
    5. Verbindung_.ConnectionString = "Data Source=DeineEingaben...
    6. DTB.verbindung_open(DTB.Verbindung)
    7. DTB.Command.CommandText = "SELECT * FROM Tabelle ...
    8. DTB.Command.Connection = DTB.Verbindung
    9. DTB.DatenAdapter.SelectCommand = DTB.Command
    10. DTB.DatenAdapter.Fill(Dset, DTB.Tabelle)
    11. Dim dview As New DataView
    12. Filter = "XYZ..."
    13. dview.Table = Dset.Tables.Item(0)
    14. dview.RowFilter = Filter
    15. DataGridView1.DataSource = dview
    16. DTB.verbindung_close(DTB.Verbindung)



    Soweit ich mich noch erinnere hatte ich mit den Microsofttreibern Probleme mit BLOBs.
    Ich hoffe, du kannst damit etwas anfangen.

    Lightsource schrieb:

    Ich hoffe, du kannst damit etwas anfangen.

    Ja, schönen Dank. Ist doch dem OLE DB ziemlich ähnlich. Aber dann arbeitest du auch nicht mit typisierten Datensets oder dem Entity Data Model, oder?

    Und was du so über die

    Lightsource schrieb:

    Wir stellen gerade von Oracle 10 auf 11 um. Leider sind die Treiber nicht kompatibel. Auch zwischen 32 und 64 Bit muss man leider unterscheiden.

    Das macht ja nicht gerade Mut. Unsere Kunden haben Oracle 9, 10 und 11 im Einsatz. Und meine Applikationen sollen bei allen laufen. Da bleibe ich wohl doch besser bei OLE DB.