SQL 查询麻烦 asp.net 网页

SQL queries trouble asp.net web pages

所以我在 webmatrix 中制作了一个简单的 asp.net 网页应用程序,但我遇到了 SQL 个问题。我正在做一个作业,我们使用 Microsoft asp.net 网页教程作为指南 (http://www.asp.net/web-pages/overview/getting-started/introducing-aspnet-web-pages-2/getting-started)。但是当尝试 运行 更新数据库的查询时,它总是失败。

我得到的错误如下:

System.FormatException: 0
Line 26: var db = Database.Open("StarterSite");
Line 27: var deleteCommand = "DELETE FROM Gift WHERE ID = @0";
Line 28: db.Execute(deleteCommand, Id); <-- crashing right here
Line 29: Response.Redirect("~/ShowDbTest");
Line 30: }

它告诉我参数的顺序是错误的,就像是一个重载错误。

但我不知道哪里出了问题,所以如果有人能告诉我我犯了什么错误,那就太好了。

@{
Layout = "~/_SiteLayout.cshtml";
var gift = "";
var likeability = "";
var Id = "";

if(!IsPost){
    if(!Request.QueryString["id"].IsEmpty() && Request.QueryString["id"].IsInt()){
        Id = Request.QueryString["id"];
        var db = Database.Open("StarterSite");
        var dbCommand = "SELECT * FROM Gift WHERE ID = @0";
        var row = db.QuerySingle(dbCommand, Id);

        if(row != null) {
            gift = row.Gift;
            likeability = row.Likeability;
        }
        else{
            Validation.AddFormError("No Gift was selected.1");
        }
    }
    else{
        Validation.AddFormError("No Gift was selected.2");
    }
}

if(IsPost){
    Validation.RequireField("gift", "You must enter a gift");
    Validation.RequireField("likeability", "Genre is required");
    Validation.RequireField("id", "No ID was submitted!");

    gift = Request.Form["gift"];
    likeability = Request.Form["likeability"];
    Id = Request.Form["Id"];

    if(Validation.IsValid()){
        var db = Database.Open("StarterSite");
        var updateCommand = "UPDATE Gift SET Gift=@0, Likeability=@1 WHERE ID=@2";
        db.Execute(updateCommand, gift, likeability, Id);
        Response.Redirect("~/showDbTest");
    }
 }
}

C# 区分大小写。

试试这个:Id = Request.Form["id"];

也可以使用:if(!Request.QueryString["id"].IsEmpty() && Request.QueryString["id"].IsInt())

另外,不要忘记关闭连接。您正在进行重定向,连接将保持打开状态。使用 USING

您将 ID 声明为字符串并且数据库(希望)定义为整数,这很可能会导致转换问题。

将您的 'Id' 转换为数据库中定义的类型并将其传入。

var Id= Convert.ToInt32(Request.QueryString["id"]);