2017-09-17 2 views
0

Ich habe eine Ausnahme geworfen bei con3.Open(); Wann immer ich die Anwendung starte. Ich habe eine Exception geworfen; "Zu viele Verbindungen" was muss ich bitte tun.So lösen Sie Exception geworfen; "Too many connections" error - Fehler wird bei con3.Open();

private void cmbartname_out_bulk_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string str_display = @"select * from bulk_available where article_name='" + cmbartname_out_bulk.Text + "'"; 
    using (var con3 = new MySqlConnection("server=127.0.0.1;userid=root;password=1001;persistsecurityinfo=True;Max Pool Size=3600;database=theshopdb;Integrated Security=True")) 
    { 
     using (MySqlCommand cmd_str_display = new MySqlCommand(str_display, con3)) 
     { 
      con3.Open(); 
      using (MySqlDataReader reader_cmb = cmd_str_display.ExecuteReader()) 
      { 
       try 
       { 
        while (reader_cmb.Read()) 
        { 
         string pdt_code = reader_cmb.GetString("article_code"); 
         int pdt_qty = reader_cmb.GetInt32("quantity"); 
         decimal pdt_unit_price = reader_cmb.GetDecimal("unit_price"); 
         string pdt_measure = reader_cmb.GetString("article_measure_unit"); 
         decimal pdt_total_value = reader_cmb.GetDecimal("total_price"); 

         // Using the variables here 
        } 
       } 

       catch (Exception ert) 
       { 
        MessageBox.Show(ert.Message, "Exception caught", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
       } 
      } 
      con3.Close(); 
     } 
    } 
} 
+1

Bitte geben Sie eine [MCVE] mit einem Schwerpunkt auf „Minimum“ –

+1

Glauben Sie nicht, Sie auch eine SQL-Injection-Problem haben? –

+0

Zusätzlich zu den anderen beiden Kommentaren ändern Sie den Event-Handler von selectedindexchange, da es sehr wahrscheinlich ist, dass während der Leseoperation der ausgewählte Index geändert wird, indem der Benutzer eine andere Verbindung auslöst, bevor con3, close() ausgeführt wird. – user2347763

Antwort

0

Der Fehler tritt normalerweise auf, wenn die offenen Verbindungen nicht geschlossen sind. Sie müssen sicherstellen, dass die Verbindung in jedem Zustand geschlossen ist. Sie können versuchen, mysql.simple nuget zu verwenden. Es öffnet und schließt die Verbindung innerhalb der using-Anweisung. Es würde auch den gesamten Code vereinfachen.

using (Database con3 = "server=127.0.0.1;userid=root;password=1001;persistsecurityinfo=True;Max Pool Size=3600;database=theshopdb;Integrated Security=True"){ 

    using (var reader_cmb = con3.Query(str_display)){ 
     try 
      { 
       while (reader_cmb.Read()) 
       { 
        string pdt_code = reader_cmb["article_code"]; 
        int pdt_qty = reader_cmb["quantity"]; 
        decimal pdt_unit_price = reader_cmb["unit_price"]; 
        string pdt_measure = reader_cmb["article_measure_unit"]; 
        decimal pdt_total_value = reader_cmb["total_price"]; 

        // Using the variables here 
       } 
      } 

      catch (Exception ert) 
      { 
       MessageBox.Show(ert.Message, "Exception caught", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
      } 
    } 

} 
Verwandte Themen