首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webmatrix和存储过程

Webmatrix和存储过程
EN

Stack Overflow用户
提问于 2010-09-16 01:23:52
回答 2查看 5.7K关注 0票数 5

我在使用WebMatrix,到目前为止,我弄清楚如何在Razor/WebMatrix中使用存储过程的最好方法是这样的-

代码语言:javascript
复制
@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注入或类似的检查,我认为这是非常有必要的。我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-16 08:09:36

Execute方法接受参数。

代码语言:javascript
复制
@if (IsPost) {
  var LinkName = Request["LinkName"];
  var LinkURL = Request["LinkURL"];
  string SQL = "exec dbo.myprocname @0, @1";
  db.Execute(SQL, LinkName, LinkURL);
}

更新:我已经更新了我的答案,以便为存储过程的参数提供编号而不是命名的占位符。

票数 6
EN

Stack Overflow用户

发布于 2012-10-17 22:34:46

这是我发现的最简单的方法,你可以使用命名参数。这意味着,如果您的存储过程有几个可选参数,则只能传递需要或想要传递的参数。

代码语言:javascript
复制
@{
    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>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3720113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档