2017-09-12 5 views
0

Je souhaite me connecter à Oracle Database par Visual Studio et renseigner datagridview par ses données. Je sais quelque chose à propos d'Oracle. J'ai juste SID, nom d'utilisateur et mot de passe. c'est le code:Connexion à Oracle La base de données ne fonctionnerait pas

using Oracle.DataAccess.Client; 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     var select = "SELECT * FROM tblProject"; 
     conn.ConnectionString = "Data Source=(DESCRIPTION=" 
     + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.3.50.205)(PORT=1521)))" 
     + "(CONNECT_DATA=(SERVER=DEDICATED)(SID=sid)));" 
     + "User Id=username;Password=pass;"; 

    } 
    using (OracleConnection connection = new OracleConnection(conn.ConnectionString)) 
     { 
      OracleDataAdapter adapter = new OracleDataAdapter(select, connection); 

      try 
      { 
       connection.Open();      
       var ds = new DataSet(); 
       adapter.Fill(ds); 
       dataGridView1.ReadOnly = true; 
       dataGridView1.DataSource = ds.Tables[0]; 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 


     } 

mais la connexion ne serait pas ouvrir? où est le problème? Merci

+0

Quel est le message d'erreur que vous obtenez? – Niladri

+0

@Niladri: Rien. mais quand je vérifie la connection.State il est fermé – nnmmss

+0

pouvez-vous changer 'sid' à' SERVICE_NAME = sid' dans votre chaîne de connexion? essayez également d'ouvrir la connexion avant de créer l'adaptateur comme 'connection.Open(); ' – Niladri

Répondre

0

Il y a plusieurs DataConnectors sur le marché. Au moins de Microsoft, Oracle et DevArt. Les chaînes de connexion ne sont pas entièrement compatibles. Donc, vous devez faire attention lorsque vous cherchez des exemples.

J'aime utiliser EZConnect chaque fois qu'il est possible:

nom d'utilisateur/mot de passe @ [//] host [: port] [/ nom_service]

moins à taper -> moins d'erreurs. Une fois j'ai dû me connecter à un système de test qui refusait l'ancienne syntaxe, mais acceptait ezconnect. Je n'ai jamais compris pourquoi.

0

Pouvez-vous essayer avec le code ci-dessous. On dirait que vous utilisez ODP.NET sans le fichier tnsnames.ora en utilisant le descripteur de connexion

using Oracle.DataAccess.Client; 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     var select = "SELECT * FROM tblProject"; 
     conn.ConnectionString = "Data Source=(DESCRIPTION=" 
     + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.3.50.205)(PORT=1521)))" 
     + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=sid)));" 
     + "User Id=username;Password=pass;"; 


    using (OracleConnection connection = new OracleConnection(conn.ConnectionString)) 
     { 
      connection.Open(); 
      OracleDataAdapter adapter = new OracleDataAdapter(select, connection); 

      try 
      { 
       var ds = new DataSet(); 
       adapter.Fill(ds); 
       dataGridView1.ReadOnly = true; 
       dataGridView1.DataSource = ds.Tables[0]; 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 


     } 

} 

vérifier cette documentation à la section « Utilisation du descripteur de connexion » section https://docs.oracle.com/cd/B28359_01/win.111/b28375/featConnecting.htm