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"]);
所以我在 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"]);