《MVC+EF实现增删改查》——查

    在MVC的控制器中查询数据库中的数据,然后在用视图显示出来,这套流程是怎么走的哪,下面我自己先宏观的总结一下。

    首先,在Controllers文件夹下创建HomeController控制器,然后在ActionResult Index()方法右击——>添加视图。然后在HomeController页面引用命名空间(Models)。

    一、查询数据

    查询数据的时候,我总结了四种方式,下面一个个介绍。

    1、第一种查询方式是使用标准的运算符(SQO)查询 

OumindBlogEntities db = new OumindBlogEntities();//实例化数据库实体对象
IQueryable<Models.BlogArticle> query= db.BlogArticles.Where(d => d.AIsDel==false);

    2、使用DBQuery延迟加载数据查询

OumindBlogEntities db = new OumindBlogEntities();//实例化数据库实体对象
DbQuery<MvcApplication1.Models.BlogArticle> query = (db.BlogArticles.Where(d => d.AIsDel == false)) as DbQuery<MvcApplication1.Models.BlogArticle>;

     延迟加载这特别的好玩,大家可以到网上查询一下相关的资料。

    3、使用List直接查询数据库,防止延迟加载数据

List<Models.BlogArticle> list = db.BlogArticles.Where(d => d.AIsDel == false).ToList();

    4、使用Linq语句查询     

List<Models.BlogArticle> list = (from d in db.BlogArticles where d.AIsDel == false select d).ToList();

    使用linq语句查询的时候,它的逻辑是:首先说明在哪个实体中查询数据(from d in db.BlogArtiticles)然后是将要查询的条件(where d.AIsDel == false),最后在实体中查询出来(select d)。使用Linq语句,.NET 编译器在编译程序集的时候,也就是将程序集编译成中间代码的时候,将Linq语句转为SQO(标准查询运算符)来执行,只不过Linq语句让程序员敲起来比较“爽”而已。

    二、将数据传送给相应的视图

    1、使用ViewBag传送数据

ViewBag.DataList = list; //使用ViewBag传输数据

    ViewBag是动态类型的,他的好处是我们可以随便给他添加属性

    2、使用ViewData传送数据

ViewData["DataList"] = list;//使用ViewData["DataList"]传输数据
return View();//加载视图


    三、显示页面

   传送给视图的是一个List,是一堆数据,视图需要将这一堆数据获取到,然将将其组织起来,这样才能形成美观的页面。下面在Index.cshtml中将list中的数据遍历出来,然后显示在页面上。

 <table id ="tbList">
        <tr>
            <th>ID</th>
            <th>标题</th>
            <th>分类</th>
            <th>状态</th>
            <th>时间</th>
            <th>操作</th>
        </tr>

    <!--遍历Action方法 设置给ViewData的集合数据,生成HTML代码-->
    @foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
    {
        <tr>
            <td>@a.AId</td>
            <td>@a.ATitle</td>
            <td>@a.BlogArticleCate.Name</td>
            <td>@a.Enumeration.e_cname</td>
            <td>@a.AUpdatetime</td>
            <td>
                <a href="javascript:del(@a.AId)">删</a>
                <a href="javascript:(@a.AId)">改</a>
            </td>
        </tr>
    }
  </table></span>

  给这个table添加个样式,让其美观一些

<style type="text/css">
        #tbList {
            border:1px solid #0094ff;
            width:800px;
            margin:10px auto; /*上下10px;左右水平居中*/
            border-collapse:collapse;/*设置为收缩边框*/
        }
            #tbList th, td {
                 border:1px solid #0094ff;
                 padding:10px;/*将内容与单元格填充开*/
            }

  这样,数据就完美的呈现在浏览器界面了,下面是效果图。

 


    四、总结

   终于写完了,这些东东包含着很多的知识点,我们只有经常使用,经常练习,这样才能将效率提升上去。在这里我感受到EF做的的确挺强大,可以联查,再配合Razor语法的使用,方便了编程人员的使用。.NET 还有很多要学习的地方,继续奋斗吧!


MVC模式的实现对数据库的增删改查 部分代码: package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import common.DBConnection; import bean.Contact; public class ContactDAO { public List getAllContact() throws Exception{ Connection conn=DBConnection.getConntion(); PreparedStatement ps=conn.prepareStatement("select * from Contact"); ResultSet rs=ps.executeQuery(); List list = new ArrayList(); while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); String phone = rs.getString("phone"); String address = rs.getString("address"); Contact c = new Contact(); c.setId(id); c.setName(name); c.setPhone(phone); c.setAddress(address); list.add(c); } rs.close(); ps.close(); conn.close(); return list; } public void addContact(String name,String phone,String address) throws Exception{ String sql = "insert into contact(id,name,phone,address) values(seq_contact.nextval,?,?,?)"; Connection con = DBConnection.getConntion(); PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, name); pstmt.setString(2, phone); pstmt.setString(3, address); pstmt.executeUpdate(); } public void delContact(int id) throws Exception{ String sql = "delete from contact where id=?"; Connection con = DBConnection.getConntion(); PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, id); pstmt.executeUpdate(); } public Contact getContactById(int id) throws Exception{ String sql = "select * from Contact where id=?"; Connection con = DBConnection.getConntion(); PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, id); ResultSet rs = pstmt.executeQuery(); Contact c = null; while(rs.next()){ // int id = rs.getInt("id"); String name=rs.getString("name"); String p
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值