der henry: C#, mysql open datareader

Beitrag lesen

Hallo Rolf,

vielen Dank und soweit verstanden. Ich habe nun alle Funktionen überprüft und dies geändert. Jetzt habe ich ein Problem, gleiche Fehlermeldung, aber erst beim > 200 Durchlauf, teilweise 500 - 600 Durchläufe bevor der Fehler mit dem datareader kommt.

Fehlerzeile cmd.ExecuteNonQuery();

Hier kommt auch deine Idee mit der sql-Befehlsverkettung vor 👍

Es kommt immer 1-2 mal vorher ein catch, danach der offene DataReader

Der "counter" ist nur zu Testzwecken eingebaut und hat keinerlei Bewandtnis

public static bool write_plcactvalue_database(Dictionary<string, string> plcactvalue)
        {
            string sql = ""; 
            
            // Werte über Parameter hinzufügen
            foreach (var dic in plcactvalue)
            {
                sql += $"UPDATE datapoints SET actvalue = '{MySqlHelper.EscapeString(dic.Value)}' WHERE plcvarname = '{MySqlHelper.EscapeString(dic.Key)}';";
                
                if (Program.debuglevel == 2)
                { Console.WriteLine($"Schlüssel: {dic.Key}, Wert: {dic.Value}"); }
            }

            try
            {
				using (MySqlCommand cmd = new MySqlCommand(sql, connection))
				{
                    cmd.ExecuteNonQuery(); 
                    if (Program.debuglevel == 2)
                    { Console.WriteLine($"SPS-Werte geschrieben: {sql}"); }

                    ConnectSql.sqlProgramm.mycounter += 1;
                    
                    // Console.Clear();
                    Console.WriteLine($"\nCounter: {ConnectSql.sqlProgramm.mycounter}");
				}
				return true;
			}
			catch (Exception e)
				{ Console.WriteLine($"Fehler beim schreiben der SPS-Werte in die Datenbank: {e}"); }
		 return false;
		}

Vielleicht fällt dir oder jemand anderen etwas auf.

Vielen Dank !!!