codestory

Stellen Sie ohne Oracle Client eine Verbindung zur Oracle-Datenbank in C# her

View more Tutorials:

Folge uns auf unserer fanpage, um jedes Mal benachrichtigt zu werden, wenn es neue Artikel gibt. Facebook

1- Die Vorstellung

Der Unterlagen wird nach ... geschrieben
  • Visual Studio 2013, 2015
  • Oracle 11g, 12c

2- Die Überblick über die Verbindung aus C# in Oracle

Zuerst sollen Sie das Verbindungsmechanismus aus einem Programm C# in Database Oracle.kennen
Das Modell 1
In diesem Modell sollen Sie Oracle Client auf dem Computer,der C# läuft, installieren. Das ist eine Teil der Oracle, die auf dem Klient gelegt wird, um die Verbindung mit der Database von HauptOracle zu unterstützen. Wenn die Database Oracle in Ihrem Computer laufend C# gelegt wird, sollen Sie Oracle Client nicht installieren. Denn die Databse Oracle ist selbst ein Oracle Client. Die Kapazität von Oracle Client ist ca. 50MB.
Das Modell 2:
Das Modell 2 genehmigt Ihnen, direkt in Oracle zu verbinden, ohne die Installierung von Oracle Client auf dem C# laufenden Computer . Sie sollen einige Bibliothek DLL von Oracle client und einige Bibliothek ODAC XCopy ins Projekt kopieren.

Und Denn Oracle Client wird nicht benutzt, gibt es keine File tnsname.ora mit der Information der Database Oracle. Deshalb enthaltet Connection String die Parameter der Database wie die Inhalt von der File tnsname.ora.

// Connection String verbindet direkt mit Oracle.
string connString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = "
     + host + ")(PORT = " + port + "))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = "
     + sid + ")));Password=" + password + ";User ID=" + user;

3- Die Bibliothek herunterladen

64-bit
32-bit
Das Ergebnis vom Herunterladen
Beachten Sie: Sie können die heruntergeladete Version 32bit benutzen (auch für Ihr 64 bit Betriebssystem). Wenn Sie bei der Verwendung von Version 64 bit C# in Oracle verbinden, manchmal erscheint die folgenden Fehler:
An unhandled exception of type 'System.BadImageFormatException' occurred in mscorlib.dll

Additional information: Could not load file or assembly 'Oracle.DataAccess, Version=4.121.2.0,
Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies.
An attempt was made to load a program with an incorrect format.
Obwohl das Betriebssystem in meinem Computer 64 bit ist, benutze ich aber das oben heruntergeladete ODAC 32bit 

4- Die Bibliothek ins Projekt kopieren

Ich erstelle ein Projekt mit dem Name ConnectOracleWithoutClient:
Das Project wird erstellt
Diskomprimieren Sie die vorher heruntergeladeten Zip File
Die folgenden File kopieren
Directory File Copy
<DIR>/instantclient_12_1 oci.dll
orannzsbb12.dll
oraocci12.dll
oraocci12d.dll
oraociei12.dll
oraons.dll
<DIR>/odp.net4/odp.net/bin/4 Oracle.DataAccess.dll
<DIR>/oramts/bin oramts.dll
oramts12.dll
oramtsus.dll
<DIR>/odp.net4/bin OraOps12.dll
Direkt die oben gewähnten File in Ihrem Projekt auf Visual Studio:kopieren und kleben
Auf Visual Studio wählen Sie die File  DLL und ihre Attribute formen
  • Copy to Output Directory: Copy if newer
Die Bibliothek anmelden und nach Oracle.DataAccess.dll.zuweisen

5- Die Verbindung prüfen

Die Klasse DBOracleUtils hat eine Utility Methode um direkt mit Oracle zur verbinden
DBOracleUtils.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;

namespace Tutorial.SqlConn
{
    class DBOracleUtils
    {

        public static OracleConnection 
                       GetDBConnection(string host, int port, String sid, String user, String password)
        {

            Console.WriteLine("Getting Connection ...");

            // 'Connection String' verbindet direkt mit Oracle.
            string connString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = "
                 + host + ")(PORT = " + port + "))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = "
                 + sid + ")));Password=" + password + ";User ID=" + user;


            OracleConnection conn = new OracleConnection();

            conn.ConnectionString = connString;

            return conn;
        }
    
    }
}
Eine Utility Klasse mit den Parameter verbindet Ihre Database Oracle :
DBUtils.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;

namespace Tutorial.SqlConn
{
    class DBUtils
    {
        public static OracleConnection GetDBConnection()
        {
            string host = "192.168.205.1";
            int port = 1521;
            string sid = "db12c";
            string user = "simplehr";
            string password = "12345";

            return DBOracleUtils.GetDBConnection(host, port, sid, user, password);
        }
    }

}
Test Oracle Connection:
Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;
using Tutorial.SqlConn;

namespace ConnectOracleWithoutClient
{
    static class Program
    {

        static void Main(string[] args)
        {
            //
            OracleConnection conn = DBUtils.GetDBConnection();

            Console.WriteLine("Get Connection: " + conn);
            try
            {
                conn.Open();

                Console.WriteLine(conn.ConnectionString, "Successful Connection");
            }
            catch (Exception ex)
            {
                Console.WriteLine("## ERROR: " + ex.Message);
                Console.Read();
                return;
            }

            Console.WriteLine("Connection successful!");

            Console.Read();
        }
    }
}
Die Applikation durchführen

6- Der Umgang mit Oracle Database durch C#

Zunächst können Sie das Handbuch über Oracle mit der Benutzung C# sehen

View more Tutorials:

Vielleicht bist du interessiert

Das sind die Online-Courses außer der Website o7planning, die wir empfehlen. Sie können umsonst sein oder Discount haben.