2016-06-05 9 views
0

Ich möchte einige Daten in einer Oracle-Datenbank über eine C# -Anwendung einfügen.ConnectionString-Ausnahme in Oracle-Datenbank

Ich bekomme immer eine Ausnahme, die wie folgt aussieht: "Der ConnectionString wurde nicht ordnungsgemäß initialisiert". Der Code zum Einfügen ist unten:

try {

   conn.openConnection(); 

       OracleCommand cmd = new OracleCommand(); 
       cmd.Connection = conn.Connection; 
       cmd.CommandType = CommandType.Text; 

       String sqlCommand = "INSERT INTO ComandaDVD (Id_Comanda,Id_Format,Data_Comanda,Id_TipPlata,Pret) VALUES (" + 
        "'" + txt_idComanda.Text + "', " + 
        "'" + txtFormat.Text + "', " + 
        "to_date('" + txtData.Text + "', 'DD-MM-YYYY'), " + 
        "'" + txtIdTipPlata.Text + "', " + 
        "'" + txtPret.Text + "')"; 

       cmd.CommandText = sqlCommand; 

       int result = cmd.ExecuteNonQuery(); 
       if (result > 0) 
       { 
        MessageBox.Show("Comanda cu id_comanda[" + txt_idComanda.Text + "]a fost primita!"); 

       } 
       else 
       { 
        MessageBox.Show("Eroare"); 
       } 

       conn.closeConnection();    
     } 

     catch (Exception ex) 
     { 
      MessageBox.Show("Exceptie" + ex.Message); 
     }   
    } 

ich auch eine persönliche Klasse machte die Verbindung Handhabung zu erleichtern: Klasse Conexiune_DB {

private OracleConnection conn; 
    private static string CONNECTION_STRING = "Data Source=80.96.123.131/ora09;User Id=hr;Password=oracletest;"; 

    public Conexiune_DB() { conn = new OracleConnection(CONNECTION_STRING); } 

    public void openConnection() { conn.Open(); } 

    public void closeConnection() { conn.Dispose(); } 

    public OracleConnection Connection 
    { 
     get { return conn; }  
    } 

} 

Die Ausnahme scheint wegen 'conn.Open' in dieser Klasse sein. Das ist komisch, weil ich vorher ein paar Insertionen gemacht habe, und ich hatte keine Probleme.

Vielen Dank im Voraus.

+0

Es gibt viele Informationen über diesen Fehler im Web. Versuchen Sie sich umzusehen, und Sie werden höchstwahrscheinlich herausfinden, wo Sie sich irren. –

+0

Sie sollten immer parametrisierte Abfragen verwenden. Diese Art von String-Verkettungen ist für SQL-Injection-Angriffe offen. –

Antwort

0

Ich bin mir ziemlich sicher, dass dies passiert, weil Sie Ihre Verbindung mit conn.openConnection(); öffnen, bevor Sie sogar einen ConnectionString gesetzt haben. Stattdessen sollten Sie den ConnectionString zuerst auf conn setzen, bevor Sie ihn öffnen. Ich bin mir nicht sicher, welche Connectionstring Sie in diesem Moment verwenden möchten, aber wenn es gleich ist, dann setzen Sie einfach conn.Conexiune_DB(); über conn.openConnection();

+1

Ich habe es schließlich herausgefunden. Ich musste die Verbindungsklasse loswerden und ein OracleConnection-Objekt in jeder Funktion instantiieren. OracleConnection conn = neue OracleConnection (CONNECTION_STRING); was ich denke, ist ein bisschen die gleiche Sache D. Petrox sagte. danke, ich schätze deine Hilfe. – freestyler09