您好我最近在我的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 。请帮我。谢谢!
答案 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等。这里的内容使您的数据库可以全面攻击。