【问题标题】:Unexpected behavior when DELETEing from TABLE in SQL在 SQL 中从 TABLE 中删除时出现意外行为
【发布时间】:2011-08-26 11:34:42
【问题描述】:

我以前做过,但这次不行。

我要做的就是从表中删除一个条目,如您所见,如果成功,它应该输出“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>

我做错了什么可能导致项目无法被删除?

【问题讨论】:

  • Database 是什么?你有任何例外吗?这段代码运行时到底发生了什么?
  • 顺便说一句,值得注意的是,编写这样的代码会使您的网站以最糟糕的方式受到 SQL 注入攻击。很抱歉,如果您发现这与您的问题无关 - 但在构建 SQL 语句时看到Request.Querystring[] 要求您的网站被歼灭。
  • @Codo - 这不是 MVC。这是网页。
  • @BENDR,您是否尝试过在d.Execute(query) 上设置断点,然后将该字符串直接粘贴到 Management Studio Express 或 mySQL 查询浏览器并在那里运行?它会删除行,还是给您一些其他信息?每当我遇到 SQL 语句没有按预期执行的问题时,我的第一个调用端口就是自己针对数据库运行它并分析发生了什么。
  • 大概如果它没有到达message = "ok"那么它一定是抛出一个被捕获的错误......消息中输出了什么?

标签: c# .net asp.net razor


【解决方案1】:

最可能的原因是,您的数据库中没有满足您的 where 子句条件的行。

先检查一下。

但如果没有关于查询字符串值和数据库设置的更多信息,一切都是猜测。

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

【讨论】:

  • 谢谢@Jan。它仍然无法正常工作。确切的代码在我玩过的其他网站上运行良好,但不是这个。就像我在问题中所说的那样,数据库中的所有内容都与查询字符串数据匹配
  • 那么您是否尝试过在 Management Studio 中执行生成的查询?桌上有触发器吗?
【解决方案2】:

我不知道您的执行在做什么,但您应该执行非查询。你可能想检查一下。

【讨论】:

  • 我正在执行一个非查询,我刚刚养成了使用“sql 语句”变量“查询”等的习惯。另外,不要被变量名所迷惑。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多