我的代码中的删除语句存在一个主要问题。
运行 C#,MySql for Visual Studio和.NET连接器。
这是非常基本的:
FYI: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 是我的表格Teile的主键。
当我评论整个if语句并将= 14
添加到strSQL
时,它完全正常并且仅删除ID为14的条目。
如果我的 Teileliste 中只有一个项目且代码自行编写(Debug.WriteLine(strSQL);
输出相同,
我的表格中的每个实体都被删除
幸运的是,我只有测试数据。
有谁能告诉我问题出在哪里?
问候 迭
答案 0 :(得分:4)
您可以使用
在日常工作中定义命令string strSQL = "DELETE FROM Teile WHERE tID ";
MySqlConnection conn = GetConnection();
MySqlCommand cmd = new MySqlCommand(strSQL, conn);
在此之后,您构建了命令字符串,但您从未将此新命令设置到命令对象中。所以你的int-ID被解释为boolean值。除0以外的所有内容都是 true 。这就是你删除所有内容的原因......
尝试在命令生成后移动new MySqlCommand...
...