Pregunta

Estoy jugando con WebMatrix, y hasta ahora la mejor manera que he descubierto cómo utilizar procedimientos almacenados con la maquinilla de afeitar / WebMatrix es como tan -

@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);
}

Tenga en cuenta, no estoy haciendo ningún tipo de comprobación de inyecciones SQL ni nada de eso, que creo que sería súper necesario. Me estoy perdiendo algo?

¿Fue útil?

Solución

El método Execute acepta parámetros.

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

Actualización:. He actualizado mi respuesta para que los parámetros para el procedimiento almacenado se dan marcadores de posición que se numeran en lugar de nombre

Otros consejos

Bueno, esto es lo que he encontrado es más fácil y se pueden utilizar parámetros con nombre. Es decir, si el procedimiento almacenado tiene varios parámetros opcionales, sólo se puede pasar a los que necesita o quiere pasar.

@{
    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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top