Announcement

Collapse
No announcement yet.

Oracle Datenbank zugriff via c#

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Oracle Datenbank zugriff via c#

    Hallo Leute,

    ich bin zurZeit in einem Schulprojekt.

    Meine Aufgabe besteht darin eine Oracle-Datenbank mithilfe von c# auszulesen etc.

    Nun ein paar Infos:

    Oracle: Läuft auf einem Virtuellen-Server (VirtualBox)
    Betriebssystem ist mein ich ein suse11!
    Diese läuft auch ohne Probleme!

    Basis ist nen Windows 7 Betriebssystem. Dort läuft auch c# womit ich auf die Oracle Datenbank in der Virtuellen Maschine zugreifen muss.

    Odac 11 ist installiert!

    Hier ein Auszug aus meinem bisherigem Programm:

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Oracle.DataAccess.Client; 
    using Oracle.DataAccess.Types; 
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            string inhalt;
            private void btneinlesen_Click(object sender, EventArgs e)
            {
                string oradb = "Data Source=ORCL;User Id=*****;Password=*****;";
                OracleConnection conn = new OracleConnection(oradb);  // C#
                conn.Open();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = conn;
                cmd.CommandText = "Select * from Kunden";
                cmd.CommandType = CommandType.Text;
                OracleDataReader dr = cmd.ExecuteReader();
                dr.Read();            
                inhalt = dr.GetString(0);
                lsbinhalt.Items.Add(inhalt);
                conn.Dispose();
            }
        }
    }
    Wenn ich den Button drücke erhalte ich in der Program.cs folgende Fehlermeldung zu dieser Zeile:

    Code:
    Application.Run(new Form1());
    Die Datei oder Assembly "Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89b483f429c47342" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.


    Zusätzlich wollte ich fragen, wie ich dem C# Programm mitteile das er die Datenbank übers Netzwerk suchen muss bzw. die Datenbank unter einer bestimmten IP findet?

    Hoffe Ihr könnt mir dabei helfen
    Vielen Dank schonmal im vorraus.

    lg snogi

  • #2
    Der Oracle Client (ODP) muss auf der Maschine installiert sein auf dem das Programm ausgeführt wird.
    Oracle.DataAccess ist eine Assembly aus ODP bzw. Du musst die Assemblies mitliefern.

    Die Datenbank findet er eigentlich über den ConnectionString. Dort kann man im Parameter das Ziel angeben. Entweder direkt über IP oder eben DNS, wenn Du einen DNS Server im Netzwerk hast.

    Comment


    • #3
      Der ODP läuft ja auch auf der Basis Maschine wo ich das Programm starte!


      Du musst die Assemblies mitliefern.

      Welche und was muss ich da genau mit machen?



      Wie lautet die Syntax bezüglich der IP im Connection String?


      Danke schonmal für die Hilfe

      lg

      Comment


      • #4
        Wenn Dir die Assembly fehlt, dann ist höchst wahrscheinlich ODP.NET nicht installiert oder du verwendest die falsche Version. Normalerweise werden die Assemblies im GAC abgelegt, wenn Du den Client installierst. Ansonsten kannst Du mal versuchen in Visual Studio -> Verweise im Projekt -> Rechtsklick auf die Assembly -> Eigenschaften -> Lokale Kopie auf true setzen. Dann wird die Assembly normalerweise mit ins Ausgabeverzeichnis kopiert und Du kannst sie auf andren Rechner einfach so mit dazu legen. Weiss allerdings nicht wie das dann mit dem Oracle Client zusammen spielt.

        Hier kannst Du die ConnectionStrings nachlesen:

        http://www.connectionstrings.com/oracle

        Unter HOST kannst Du denk ich mal auch eine IP Adresse angeben.

        Allerdings muss der Client auch dafür konfiguriert sein. Dazu muss Du in der SQLNET.ORA den names.directory_path so anpassen:

        Code:
        names.directory_path = (HOSTNAME,TNSNAMES)
        Nur dann kannst Du direkt über Hostnamen verbinden. Ansonsten gelten nur die Einträge in der TNSNAMES.ORA.

        Comment

        Working...
        X