5

私は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インジェクションなどのチェックを行っていません。これは非常に必要だと思います。私は何かが足りないのですか?

4

2 に答える 2

6

The Execute method accepts parameters.

@if (IsPost) {
  var LinkName = Request["LinkName"];
  var LinkURL = Request["LinkURL"];
  string SQL = "exec dbo.myprocname @0, @1";
  db.Execute(SQL, LinkName, LinkURL);
}

Update: I've updated my answer so that the parameters for the sproc are given placeholders that are numbered rather than named.

于 2010-09-16T00:09:35.873 に答える
3

これが私が見つけた最も簡単な方法であり、名前付きパラメーターを使用できます。つまり、ストアドプロシージャにいくつかのオプションのパラメータがある場合は、必要なパラメータまたは渡したいパラメータのみを渡すことができます。

@{
    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>
于 2012-10-17T14:34:45.713 に答える