2011-08-26 85 views
1

我之前完成了它,但这次它不工作。从SQL中的表中删除时发生意外的行为

所有我想要做的就是删除表中的一个条目,你可以看到,它应该输出“OK”,如果它成功了,(我手动检查查询字符串数据和一切与它试图删除的内容相匹配,即使所有条件都满足),但它不会被删除。

@{ 
    var message = ""; 
    try 
    { 
     var d = Database.Open("tgyytuyt"); 
     var query = "DELETE FROM Cart WHERE OrderId = '" + Request.QueryString["Value"] + "' AND UserId = '" + Request.QueryString["SubValue"] + "' AND PartNumber = '" + Request.QueryString["Final"] + "'"; 
     d.Execute(query); 

     message = "ok"; 
     //Response.Redirect("~/OSM/Default.cshtml"); 
    } 
    catch(Exception ex) 
    { 
     message = ex.Message; 
    } 
} 
<p>@message</p> 

有没有什么,我做错了,可能会导致该项目不被删除?

+0

什么是数据库?你有什么例外吗?这段代码运行时究竟发生了什么? –

+3

正如旁白一样,值得注意的是,编写这样的代码会使您的网站以最糟糕的方式面临SQL注入攻击。我很抱歉,如果你可能没有找到与你的问题有关的东西 - 但在构造SQL语句时看到Request.Querystring []'是要求你的网站被歼灭。 –

+0

谢谢@ Moo-Juice :) – BENDR

回答

1

最可能的原因是数据库中没有符合where子句条件的行。

先检查一下。

但没有关于你的querystring和你的数据库设置的价值更多的信息,它的所有猜测。

它也可能是一个触发...

+0

谢谢@Jan。它仍然不起作用。确切的代码在我玩过的其他站点中工作正常,但不是这个。就像我在我的问题中所述,数据库中的所有内容都与查询字符串数据匹配 – BENDR

+0

因此,您是否试图在Management Studio中执行生成的查询?桌上有触发器吗? – Jan

1

我不知道你是执行做什么,而是你应该执行非查询。你可能想检查一下。

+0

我正在执行一个非查询,我刚刚进入了我的“sql语句”变量“查询”等等的习惯。另外,不要被变量名称愚弄。 – BENDR