web-dev-qa-db-fra.com

Connexion à la base de données Oracle via C #?

Je dois me connecter à une base de données Oracle (externe) via Visual Studio 2010. Mais je ne souhaite pas installer Oracle sur ma machine. Dans mon projet, j'ai référencé: System.Data.OracleClient . Mais ce n'est pas satisfaire le besoin. J'ai un "IDE Oracle SQL Developer" dans lequel je lance des requêtes SQL sur la base de données Oracle.

J'ai ce code jusqu'à présent:

 private static string GetConnectionString()
    {
        String connString = "Host= serverName;database=myDatabase;uid=userName;pwd=passWord";
        return connString;
    }

 private static void ConnectingToOracle()
    {
        string connectionString = GetConnectionString();
        using (OracleConnection connection = new OracleConnection())
        {
            connection.ConnectionString = connectionString;
            connection.Open();
            Console.WriteLine("State: {0}", connection.State);
            Console.WriteLine("ConnectionString: {0}",
                              connection.ConnectionString);

            OracleCommand command = connection.CreateCommand();
            string sql = "SELECT * FROM myTableName";
            command.CommandText = sql;

            OracleDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                string myField = (string)reader["MYFIELD"];
                Console.WriteLine(myField);
            }
        }
    }

Jusqu'à présent, j'ai lu ces blogs:

http://st-curriculum.Oracle.com/tutorial/DBXETutorial/index.htm

http://blogs.msdn.com/b/kaevans/archive/2009/07/18/connecting-to-Oracle-from-visual-studio.aspx

Jusqu'à présent, je n'ai rien téléchargé d'Oracle. Quelles mesures dois-je prendre pour que cela se produise?

33
RG-3

Tout d’abord, vous devez télécharger et installer ODP à partir de ce site http://www.Oracle.com/technetwork/topics/dotnet/index-085163.html

Après l'installation, ajoutez une référence à l'assembly Oracle.DataAccess.dll .

Vous êtes bon pour aller après cela.

using System; 
using Oracle.DataAccess.Client; 

class OraTest
{ 
    OracleConnection con; 
    void Connect() 
    { 
        con = new OracleConnection(); 
        con.ConnectionString = "User Id=<username>;Password=<password>;Data Source=<datasource>"; 
        con.Open(); 
        Console.WriteLine("Connected to Oracle" + con.ServerVersion); 
    }

    void Close() 
    {
        con.Close(); 
        con.Dispose(); 
    } 

    static void Main() 
    { 
        OraTest ot= new OraTest(); 
        ot.Connect(); 
        ot.Close(); 
    } 
}
49
Prabhu Murthy

Vous pouvez également utiliser Oracle.ManagedDataAccess le package NuGet (.NET> = 4.0, base de données> = 10g, version 2).

20
honzakuzel1989

Utiliser Nuget

  1. Faites un clic droit sur Projet, sélectionnez Manage NuGet packages...
  2. Sélectionnez l'onglet Browse, recherchez Oracle et installez Oracle.ManagedDataAccess

Oracle NuGet package

  1. En code utilisez la commande suivante (Ctrl+. ajouter automatiquement la directive using).

  2. Notez la chaîne de données différente qui, par rapport à Java, est différente.

    // create connection
    OracleConnection con = new OracleConnection();
    
    // create connection string using builder
    OracleConnectionStringBuilder ocsb = new OracleConnectionStringBuilder();
    ocsb.Password = "autumn117";
    ocsb.UserID = "john";
    ocsb.DataSource = "database.url:port/databasename";
    
    // connect
    con.ConnectionString = ocsb.ConnectionString;
    con.Open();
    Console.WriteLine("Connection established (" + con.ServerVersion + ")");
    
7
Boern

La prochaine approche me convient avec Visual Studio 2013 Update 4 1- Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur Références, puis sélectionnez Ajouter des références. 2- Assemblys> Framework> System.Data.OracleClient> OK. Vous pouvez ensuite ajouter des éléments à l'aide de System.Data. OracleClient dans votre application et gère la base de données comme vous le faites avec la base de données Sql Server, sauf que le préfixe Sql est remplacé par Oracle, comme dans SqlCommand, devient OracleCommand, par exemple, pour établir une liaison avec Oracle XE.

OracleConnection oraConnection = new OracleConnection(@"Data Source=XE; User ID=system; Password=*myPass*");
public void Open()
{
if (oraConnection.State != ConnectionState.Open)
{
oraConnection.Open();
}
}
public void Close()
{
if (oraConnection.State == ConnectionState.Open)
{
oraConnection.Close();
}}

et pour exécuter des commandes telles que INSERT, UPDATE ou DELETE en utilisant une procédure stockée, nous pouvons utiliser la méthode suivante

public void ExecuteCMD(string storedProcedure, OracleParameter[] param)
{
OracleCommand oraCmd = new OracleCommand();
oraCmd,CommandType = CommandType.StoredProcedure;
oraCmd.CommandText = storedProcedure;
oraCmd.Connection = oraConnection;

if(param!=null)
{
oraCmd.Parameters.AddRange(param);
}
try
{
oraCmd.ExecuteNoneQuery();
}
catch (Exception)
{
MessageBox.Show("Sorry We've got Unknown Error","Connection Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
1
Elsadig Adam

Dans ce cas, System.Data.OracleClient doit avoir accès à certaines des dll Oracle qui ne font pas partie de .Net. Solutions:

  • Installez le client Oracle et ajoutez l'emplacement de la corbeille à l'environnement Path de Windows ou
  • Copiez oraociicus10.dll (version Basic-Lite) ou aociei10.dll (version standard), oci.dll, orannzsbb10.dll et oraocci10.dll à partir du dossier installable du client Oracle dans le dossier bin de l'application afin que l'application puisse trouver la dll requise
0
techExplorer