我试图在视图中显示SQL存储过程的多列/结果。 目前,我的控制器看起来像这样
public class StatusController : Controller
{
// GET: Status
dbEntities db = new dbEntities();
public ActionResult Index()
{
db.Database.Connection.Open();
var tdaydate = DateTime.Now;
var command = db.Database.Connection.CreateCommand();
command.CommandText = "dbo.pr_stored_procedure";
command.Parameters.Add(new SqlParameter { ParameterName = "@day", SqlDbType = System.Data.SqlDbType.DateTime, Value = tdaydate });
command.CommandType = System.Data.CommandType.StoredProcedure;
var test = (command.ExecuteScalar());
ViewBag.res = test;
return View();
}
}
我的观点有以下一行
@model IEnumerable<dbentity.Models.SP_Stored-ProcedureRESULTS>
@{
ViewBag.Title = "index";
}
<h2>index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.rooms)
</th>
<th>
@Html.DisplayNameFor(model => model.ooo)
</th>
<th>
@Html.DisplayNameFor(model => model.rent)
</th>
<th>
@Html.DisplayNameFor(model => model.occupied)
</th>
etc
<th></th>
</tr>
<tr>
<td>
@ViewBag.res;
</td>
</tr>
@*@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.rooms)
</td>
<td>
@Html.DisplayFor(modelItem => item.ooo)
</td>
<td>
@Html.DisplayFor(modelItem => item.rent)
</td>
etc
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.rooms}) |
@Html.ActionLink("Details", "Details", new { id=item.rooms }) |
@Html.ActionLink("Delete", "Delete", new { id=item.rooms })
</td>
</tr>
}*@
注意:FOREACH循环被注释掉了,因为它丢失了错误,我正在调试。
现在,这将返回第一列的值(应该使用ExecuteScalar命令),但是我需要做什么才能获得所有其他列/结果,以便我可以在视图中显示它们。 / p>
我尝试添加:
System.Data.SqlClient.SqlDataAdapter SqlDbAdapter = new
System.Data.SqlClient.SqlDataAdapter();
System.Data.DataSet SQLDataSet = new System.Data.DataSet();
SqlDbAdapter.SelectCommand = SqlDbCommand;
SqlDbAdapter.Fill(SQLDataSet);
SQLDataSet.Tables[0].TableName = "PR_Foo";
if (SQLDataSet.Tables.Count != 0) {
Result1 = int.Parse(SQLDataSet.Tables[SQLDataSet.Tables.Count - 1].Rows[0][0].ToString());
Result2 = int.Parse(SQLDataSet.Tables[SQLDataSet.Tables.Count - 1].Rows[0][1].ToString());
etc
}
到我的控制器(在command.CommandType = System.Data.CommandType.StoredProcedure; line之后),但VS抱怨SqlDbAdapter.SelectCommand = SqlDbCommand行(具体来说,SqlDBCommand ...&#34; SqlDbCommand dos不存在在当前的背景下#34;)
有人能告诉我如何存储22个不同的结果/列,以便我可以在视图中调用它们吗?
感谢
答案 0 :(得分:1)
您是否尝试过ExecuteReader()
并重复搜索结果? ExecuteScalar
将尝试返回结果第一行的第一列。
将您的问题简化为最简单的复制可能会帮助您更快地找到答案。