C# 动态删除代码删除整个表

C# 动态删除代码删除整个表,c#,mysql,sql,sql-delete,dynamic-sql,C#,Mysql,Sql,Sql Delete,Dynamic Sql,我的代码中的delete语句有一个主要问题 运行C#、MySql for Visual Studio和.NET连接器 这是非常基本的: 仅供参考:Teile=德语零件 我有一个列表,其中项目有一个ID、一个描述和一个计数。 此列表用于我的删除函数(我知道,没有参数): publicstaticvoiddelete(列表Teileliste) { 字符串strSQL=“从Teile中删除,其中tID”; MySqlConnection conn=GetConnection(); MySqlComm

我的代码中的delete语句有一个主要问题

运行C#、MySql for Visual Studio和.NET连接器

这是非常基本的:

仅供参考:Teile=德语零件

我有一个
列表
,其中项目有一个ID、一个描述和一个计数。 此列表用于我的删除函数(我知道,没有参数):

publicstaticvoiddelete(列表Teileliste)
{
字符串strSQL=“从Teile中删除,其中tID”;
MySqlConnection conn=GetConnection();
MySqlCommand cmd=新的MySqlCommand(strSQL,conn);
如果(Teileliste.Count>1)
{
strSQL+=”在(“;
foreach(Teileliste中的var项)
{
strSQL+=item.ID+“,”;
}
strSQL=strSQL.Substring(0,strSQL.Length-2)+“;
}
其他的
{
strSQL+=“=”+Teileliste[0].ID;
}
Debug.WriteLine(strSQL);
尝试
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch(MySqlException){throw;}
最后{conn.Close();}
}
tID是我的表Teile的主键

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

如果我的TeileList中只有一个项,并且代码自己编写(Debug.WriteLine(strSQL);输出相同的内容, 我的表中的每个实体都被删除

幸运的是,我只有测试数据

有人能告诉我问题出在哪里吗

问候
Diego

您可以使用

string strSQL = "DELETE FROM Teile WHERE tID ";
MySqlConnection conn = GetConnection();
MySqlCommand cmd = new MySqlCommand(strSQL, conn);
在此之后,您将生成命令字符串,但从未将此新命令设置到您的命令对象中。因此,您的int ID将被解释为布尔值。除0之外的所有值都为true。这就是为什么您删除所有值


尝试在命令生成后移动
新的MySqlCommand…

确保
Teileliste
中没有每个ID,使用某种视图可能会过滤掉一些/大部分。该循环可以替换为
string.Join(“,”,Teileliste)
我确信
Teileliste
只有一个ID,因为
Debug.WriteLine
在()语句。既然有项目
ID、Description和Partcount
,我如何从
Teileliste
中获取ID?请发布您在
调试中获得的SQL命令。打印时既要使用一个ID,也要使用多个ID。@Shnugo只需一个项目即可删除它:
从Teile中删除,其中tID=18有多个:
从Teile WHERE tID IN(18,17)
当我把它复制到我的PhpMyAdmin中时,它工作得非常好。对不起,我以为它是一个
列表:
字符串。Join(,”,Teileliste.Select(s=>s.Id.ToString().ToArray())谢谢,那是我的问题!现在我觉得自己很愚蠢:D@Diego没关系,到处都有绿色的灌木丛要隐藏!快乐的编码!格林·奥斯·维恩!