Ich habe ein großes Problem mit meiner Löschanweisung in meinem Code.Dynamischer Löschcode löscht ganze Tabelle
Ausführen C#, MySql für Visual Studio und der .NET-Connector.
Es ist wirklich basic:
FYI: Teile = Teile in Deutsch
ich ein List<Teile>
haben, wo das Element hat eine ID, eine Beschreibung und eine Zählung. Diese Liste wird an meine Löschfunktion gegeben (ich weiß, keine Parameter):
public static void Delete(List<TeilShort> Teileliste)
{
string strSQL = "DELETE FROM Teile WHERE tID ";
MySqlConnection conn = GetConnection();
MySqlCommand cmd = new MySqlCommand(strSQL, conn);
if (Teileliste.Count > 1)
{
strSQL += "IN (";
foreach (var item in Teileliste)
{
strSQL += item.ID + ", ";
}
strSQL = strSQL.Substring(0, strSQL.Length - 2) + ")";
}
else
{
strSQL += "= " + Teileliste[0].ID;
}
Debug.WriteLine(strSQL);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (MySqlException) { throw; }
finally { conn.Close(); }
}
Die tID ist die Primary Key meiner Tabelle Teile.
Wenn ich kommentieren Sie die gesamte if-Anweisung und = 14
-strSQL
nur hinzufügen, dann ist es völlig in Ordnung funktioniert und löscht nur den Eintrag mit der ID 14.
Wenn ich nur ein Element in meinem Teileliste und die Code schreibt selbst (die Debug.WriteLine(strSQL);
Ausgänge gleich, jede Entität in meinem Tisch
Zum Glück gelöscht wird ich hatte nur Testdaten darin.
Kann mir jemand sagen, wo das Problem sein könnte?
Grüße Diego
Stellen Sie sicher, dass 'Teileliste' tut jede ID in ihm haben, irgendeine Art von Ansicht mit vielleicht einige/die meisten filtern aus. Diese Schleife könnte durch 'string.Join (", ", Teileliste) ersetzt werden' – Plutonix
Ich bin mir sicher, dass 'Teileliste' nur eine ID hat, da 'Debug.WriteLine' die '= ID' und nicht' IN () Aussage. Wie bekomme ich die IDs aus der '' '' '' '' '' '' '' '' '' '' '' '' ''ID, Description und Partcount? – Diego
Bitte senden Sie den SQL-Befehl, den Sie in Ihrem 'Debug.Print' erhalten, auch mit nur einer ID wie mit mehreren. – Shnugo