C# 如何向WebMatrix数据库添加参数。查询?

C# 如何向WebMatrix数据库添加参数。查询?,c#,asp.net-mvc-4,webmatrix,C#,Asp.net Mvc 4,Webmatrix,使用Database.Query对“我的代码”的可读性产生了影响: String Select = 'sp_getAllUsers'; WebMatrix.Data.Database DB = WebMatrix.Data.Database.Open(MyConString); var data = DB.Query(Select); 我想切换到非存储过程查询。可以作为SQL参数传递的,对象[],但是它们没有关于它的任何进一步信息 所以我有两个问题: 如何创建对象[] 以这种方式添加参数是否

使用Database.Query对“我的代码”的可读性产生了影响:

String Select = 'sp_getAllUsers';
WebMatrix.Data.Database DB = WebMatrix.Data.Database.Open(MyConString);
var data = DB.Query(Select);
我想切换到非存储过程查询。可以作为SQL参数传递的,
对象[]
,但是它们没有关于它的任何进一步信息

所以我有两个问题:

  • 如何创建
    对象[]
  • 以这种方式添加参数是否可以防止黑客威胁,如SQL注入
以下是我尝试过的内容的简略版本:

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);
我看过的所有资料似乎都是参考资料。已关闭,但他不使用查询方法的参数。

请尝试使用以下语法:

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");
更多信息,请参阅:


另外,使用参数总是会阻止SQL注入,因为它总是对一个单引号进行双引号。

这是可行的,但是,我的另一个问题没有得到回答,即添加参数的方法会阻止SQL注入吗?或者我应该这样做:
从名为N'@0'和姓为N'@1'的用户中选择*
?使用参数将始终阻止SQL注入,因为它们总是双引号引用一个引号。如果这解决了您的问题,请将其作为解决方案。谢谢!:)我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。