Verbinden mit Oracle Database mit C# ohne Oracle Client

View more categories:

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

In dem Fall von dem Herunterladen 64bit:
Im Fall vom Herunterladen 32bit
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 categories: