动态删除代码擦除整个 table

Dynamic delete code erases whole table

我的代码中的 delete 语句存在重大问题。

运行 C#,MySql Visual Studio 和 .NET 连接器。

真的很基础:

仅供参考:Teile = 德语部分

我有一个 List<Teile>,其中项目有 ID、描述和计数。 此列表提供给我的删除功能(我知道,没有参数):

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(); }
}

tID 是我的 table Teile 的 Primary Key

当我注释整个 if 语句并将 = 14 添加到 strSQL 时,它工作得很好,只删除 ID 为 14 的条目。

如果我的 Teileliste 中只有一项并且代码会自行写入(Debug.WriteLine(strSQL); 输出相同, 我的 table 中的每个实体都被删除

还好我里面只有测试数据

谁能告诉我问题出在哪里?

问候 迭戈

你在你的例程之上定义你的命令

string strSQL = "DELETE FROM Teile WHERE tID ";
MySqlConnection conn = GetConnection();
MySqlCommand cmd = new MySqlCommand(strSQL, conn);

在此之后,您构建了您的命令字符串,但您从未将这个新命令设置到您的命令对象中。所以你的 int-ID 被解释为布尔值。除 0 以外的所有值都是 true。这就是你删除所有内容的原因...

尝试在命令生成后移动 new MySqlCommand......