WebMatrix y procedimientos almacenados
-
03-10-2019 - |
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?
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>