我在使用WebMatrix,到目前为止,我弄清楚如何在Razor/WebMatrix中使用存储过程的最好方法是这样的-
@if (IsPost) {
var LinkName = Request["LinkName"];
var LinkURL = Request["LinkURL"];
string sQ = String.Format("execute dbo.myprocname @LinkName=\"{0}\",
@LinkURL=\"{1}",LinkName, LinkURL);
db.Execute(sQ);
}注意,我没有做任何类型的SQL注入或类似的检查,我认为这是非常有必要的。我是不是遗漏了什么?
发布于 2010-09-16 08:09:36
Execute方法接受参数。
@if (IsPost) {
var LinkName = Request["LinkName"];
var LinkURL = Request["LinkURL"];
string SQL = "exec dbo.myprocname @0, @1";
db.Execute(SQL, LinkName, LinkURL);
}更新:我已经更新了我的答案,以便为存储过程的参数提供编号而不是命名的占位符。
发布于 2012-10-17 22:34:46
这是我发现的最简单的方法,你可以使用命名参数。这意味着,如果您的存储过程有几个可选参数,则只能传递需要或想要传递的参数。
@{
var db = Database.Open("your database name");
var param1 = "informationhere";
var param2 = "informationhere";
// or var param2 = 15247 (no quotes necessary if param is an integer datatype)
var procRows = db.Query("Exec dbo.procName @RealParameterName1=@0, @RealParameterName2=@1", param1, param2);
}
<table>
@foreach( var procRow in procRows )
{
<tr>
<td>@procRow.ColumnName1</td>
<td>@procRow.ColumnName2</td>
<td>@procRow.ColumnName3</td>
//etc
</tr>
}
</table>https://stackoverflow.com/questions/3720113
复制相似问题