使用Database.Query在我的代码中提供了a huge improvement可读性:
String Select = 'sp_getAllUsers';
WebMatrix.Data.Database DB = WebMatrix.Data.Database.Open(MyConString);
var data = DB.Query(Select);
我想切换到非存储过程查询。 MSDN says there's an optional parameter to the Query Method,Object[]
,可以作为SQL参数传递,但是他们没有任何关于它的更多信息。
所以我有两个问题:
Object[]
? 这是我尝试过的简略版本:
Select = "Select * From Users Where first_name = "Foo" AND last_name = "Bar"
// Like Javascript
Object[] params = {"first_name" : "Foo"}, {"last_name" : "Bar"};
// More Like What I think it will be
Object[] Params = (String Name = "first_name", String First_Name = "Foo");
var data = DB.Query(Select, params);
我查看过的所有资料似乎只是参考the old way。 This很接近,但他没有使用Query方法的参数参数。
答案 0 :(得分:4)
尝试使用以下语法:
string selectCommand = "sp_getAllUsers(@0, @1)";
// selectCommand = "Select * From Users Where first_name = @0 AND last_name = @1";
...
var data = DB.Query(selectCommand, "Foo", "Bar");
更多信息,请参阅: http://www.aspnet101.com/2010/07/webmatrix-tutorial-working-with-data/
此外,使用参数将始终阻止SQL注入,因为它总是双引号单引号。