动态删除代码擦除整个 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...
...
我的代码中的 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...
...