数据转换失败。为什么?

时间:2011-04-23 14:45:59

标签: c# asp.net-4.0 webmatrix

您好我最近在我的Asp中遇到了问题。 Net C#4应用程序。我从地址获取值,然后将它们放入数据库。但框架给我“数据转换失败。[OLE DB状态值(如果已知)= 2] ”错误。 这是我的代码:

var db = Database.Open("StarterSite");
var insert = db.Execute("INSERT INTO Downloads (ID, Name, Url, Size) VALUES ('@1', '@2', '@3', '@4')", Convert.ToInt32(Request.QueryString["fileid"]), Request.QueryString["name"], Request.QueryString["url"], Request.QueryString["size"]);

ID int 名称,网址,尺寸 ntext 。请帮我。谢谢!

2 个答案:

答案 0 :(得分:2)

数据库助手接受的参数标记必须从0开始

var db = Database.Open("StarterSite");
var insert = db.Execute("INSERT INTO Downloads (ID, Name, Url, Size) VALUES (@0, @1, @2, @3)", Request["fileid"], Request["name"], Request["url"], Request["size"]);

答案 1 :(得分:0)

如果ID列是整数,则不要将值包装在引号中:

'@1'应为@1

注意:这里有一个SQL注入漏洞。 从不直接在这样的查询中使用查询字符串输入(或表单输入或任何用户输入)。查看参数化查询,ORM等。这里的内容使您的数据库可以全面攻击。