2016-05-15 10 views
1

我是一个非常新的C#初学者,与vb中做代码的旧风格不同。但试图找出正确的方法来编写一个添加sql语句现在是非常令人困惑的,我不知道下面的顺序是什么,我会分解sql语句。仅用于示例目的。构成正确的SQL添加语句的是什么,为Webmatrix 3的初学者打破了部分内容?

var addsqlquery = "INSERT INTO Expenses (Company_Name, Company_Address, Company_City, Company_State, State_Tax_Rate1, Item_Name, Item_Price, Sales_Tax_Amount, State_Tax_Rate2, Zip_Code, Phone_Number, Quantity, Date_Bought, Truck_Number, Tax_Type) VALUES (@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,10,@11,@12,@13,@14) 

现在主要是混乱,这是@ 1的值,@ 2,@ 3,@ 4,@ 5等,哪里从来该信息。 这是否@ 0来自下一行中的代码,例如:

db.Execute(insertQuery,Company_Name, Company_Address, Company_City,Company_State, State_Tax_Rate1, Item_Name, Item_Price, Sales_Tax_Amount,State_Tax_Rate2, Zip_Code, Phone_Number, Quantity, Date_Bought, Truck_Number, Tax_Type); 

像@ 0 = COMPANY_NAME? @ 2 = Company_Address?如果是这样的情况下,它应该拉他们从提交按钮填充变量可以说:

var Company_Name=Request.Form["Company_Name"]; Correct? 

我很新的C#编程结构,并WebMatrix的,但我很困惑,如果有人可以只给我解释一下哪里他们的变量来自并传递到他们获取信息的地方,我想我最终可以完成1页的从asp(classic)升级到cshtml风格的页面。先谢谢你。

回答

1

@标志开头并从0开始依次递增的令牌是参数占位符。也就是说,它们是提供给sql语句的值的占位符。

通常,这些值来自用户,作为发布的表单值。您可以在代码中使用参数来防止可能的SQL注入攻击。

您传递值(或它们的源极),以它们出现在SQL例如Database.Execute,Database.Query,Database.QueryValue或Database.QuerySingle方法的顺序

var sql = INSERT INTO People (Firstname, Lastname, DateOfBirth) VALUES (@0,@1,@2) 
db.Execute(sql, Request.Form["Firstname"], Request.Form["Lastname"], Request.Form["Dob"]); 

您应该花一些时间阅读ASP.NET Web Pages/Razor的入门教程,特别是数据访问的教程:http://www.asp.net/web-pages/overview/data/5-working-with-data

我也编写了一系列关于从传统ASP到网页迁移的文章,您也可能会发现它们有帮助。这里是关于数据的一个:http://www.mikesdotnetting.com/article/226/migrating-classic-asp-to-asp-net-razor-web-pages-part-two-data-access

相关问题