我编写了一个sql语句,用于从mvc4中选择数据库中的数据。
我尝试选择所有与数值比较的数据。
这是什么意思:
@{
var db = Database.Open("DefaultConnection");
var data = db.Query("SELECT * FROM Mag WHERE mytitle= model=>model.title");
}
我想提出过滤数据的条件。
然后在html中执行此操作:
<ol>
@foreach (var image in data)
{
<li>
<img src="@Url.Content(image.picpath)"/>
</li>
}
</ol>
任何人都知道它是如何运作的?我经常搜索但不能做任何事情。
感谢任何帮助:
答案 0 :(得分:1)
首先,将该代码移出视图并将其放入Controller中。您应该避免将数据访问代码放在View中,因为您正在破坏MVC模式。
其次,如果将该代码移动到Controller中的Action,则可以执行以下操作:
public ActionResult Index()
{
var myModel = GetMyModel();//However you do it
var db = Database.Open("DefaultConnection");
//DON'T USE THE ACTUAL QUERY BELOW. IT EXPOSES YOU TO SQL INJECTION
//USE PARAMETERS INSTEAD. I'm sure your db OBJECT allows you to use them.
var data = db.Query("SELECT * FROM Mag WHERE mytitle= model='{0}'",myModerl.Title);
return View("YourView", data);
}
现在你的观点可以强烈输入:
@model IEnumerable<YourModel>
<ol>
@foreach (var image in Model)
{
<li>
<img src="@Url.Content(image.picpath)"/>
</li>
}
</ol>
最后,正如我在代码注释中提到的,不要使用字符串连接来构建SQL语句。我确信无论您使用什么来访问数据,都可以指定参数。
此外,永远不要select * from ...
。只选择您需要的列,不再选择。如果将来某个列添加到该表中(例如,一个巨大的BLOB),您将不必要地检索该列。