2

请任何人向我解释以下代码有什么问题,为什么没有删除表行。

con.Open();
SqlCommand cmd = new SqlCommand("delete from RentTable where CID = '" + ID + "' and MID = '" + MID + "' )", con);
int result = cmd.ExecuteNonQuery();
if (result == 1)
{
    Message = "succsess";
}
else
{
    Message = "!";
}
con.Close();
4

4 回答 4

3

如果人们首先将查询加载到字符串变量中,然后将它们打印出来以进行调试,那么所有这些类型的问题中的 75% 都将得到解决 :-)

)您的查询末尾有一个不应该存在的右括号。

于 2013-09-20T21:01:25.383 回答
2

您的 sql 似乎有一个右大括号,而没有左大括号。

将其更改为

SqlCommand cmd = new SqlCommand(
     "delete from RentTable where CID = '" + ID + "' and MID = '" + MID + "'"
     , con);
于 2013-09-20T20:57:06.220 回答
2

你的命令是:

SqlCommand cmd = new SqlCommand(
    "delete from RentTable where CID = '" + ID + "' and MID = '" + MID + "' )",
    con
);

虽然它应该是:

SqlCommand cmd = new SqlCommand(
    "delete from RentTable where CID = '" + ID + "' and MID = '" + MID + "' ", 
    con
);

(你应该从你的命令中删除“)”)

于 2013-09-20T21:01:16.447 回答
2

将带有 sql 命令创建的行更改为:

/* look at this - no need to wrap string values with 
   apostrophes since you use parameters */
string query = "delete from RentTable where CID = @id and MID = @mid";

/* create command */
SqlCommand cmd = new SqlCommand(query);

/* set parameters */
cmd.Parameters.AddWithValue("@id", ID);
cmd.Parameters.AddWithValue("@mid", MID);

这不仅能解决你的问题。如果您将使用参数而不是串联,这将帮助您防止将来出现类似的问题。

附言。如果你的意思是英文单词,你也有“成功”拼写错误;)

于 2013-09-20T21:45:18.773 回答