MVC应用(登入1)

之前介绍过MVC(Model-View-Controller)这里举一个具体的例子说明(C#)

View部分:

         界面:

                      

这是一个登入的界面

textbox1:txtName

textbox2:txtPwd

button1:btnSubmit

label1:lblMsg

Model部分:

下面添加两个类库(ToEmail.Rule、ToEmail.DataAccess):

                       

                          

ToEmail.DataAccess同理添加。

这里先建立数据库(Sales),表(Login_Info),字段(UserName、UserPwd)

                            

                            

 

下面是ToEmail.DataAccess模块代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ToEmail.DataAccess
{
    public class UserDataAccess
    {
        SqlConnection Conn;
        SqlDataAdapter UserDa;

        public UserDataAccess()
        {
            Conn = new SqlConnection("server=(local);database=Sales;user id=sa;pwd=123456");
        }
        /// <summary>
        /// 校验用户是否可以登入
        /// </summary>
        /// <param name="name">用户名</param>
        /// <param name="pwd">密码</param>
        /// <returns>DataSet</returns>
        public DataSet UserLogion(string name, string pwd)
        {
            DataSet UserDs = new DataSet();
            string sql = "select * from Login_Info where UserName=@UserName and UserPwd=@UserPwd";
            UserDa = new SqlDataAdapter();
            UserDa.SelectCommand = new SqlCommand(sql, Conn);
            UserDa.SelectCommand.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 50));
            UserDa.SelectCommand.Parameters["@UserName"].Value = name;
            UserDa.SelectCommand.Parameters.Add(new SqlParameter("@UserPwd", SqlDbType.NVarChar, 50));
            UserDa.SelectCommand.Parameters["@UserPwd"].Value = pwd;
            UserDa.Fill(UserDs);
            return UserDs;
        }
    }
}


在ToEmail.Rule中添加引用:

                                                             

                                                            

ToEmail.Rule代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using ToEmail.DataAccess;

namespace ToEmail.Rule
{
    public class UserRules
    {
        ToEmail.DataAccess.UserDataAccess Uda = new ToEmail.DataAccess.UserDataAccess();
        /// <summary>
        /// 检测用户是否存在
        /// </summary>
        /// <param name="name">用户名</param>
        /// <param name="pwd">密码</param>
        /// <returns>bool</returns>
        public bool CheckUser(string name, string pwd)
        {
            DataSet Uds = Uda.UserLogion(name, pwd);
            if (Uds.Tables[0].Rows.Count > 0)
            {
                return true;
            }
            return false;
        }
    }
}


Controller部分:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ToEmailDemo02
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            ToEmail.Rule.UserRules Urule = new ToEmail.Rule.UserRules();
            if (Urule.CheckUser(txtName.Text.Trim(), txtPwd.Text.Trim()))
            {
                lblMsg .Text ="登入成功";
            }
            else
            {
                lblMsg.Text = "登入失败";
            }
        }
    }
}

运行结果:



        这个例子充分体现了MVC的三层架构,使用户界面逻辑与业务逻辑分离开来,不过相比之下,代码量增加了。

        数据访问层:ToEmail.DataAccess连接数据库,只管对数据库操作,其他的什么也不管,把结果返回即可,返回DataSet。

        规则层:ToEmail.Rule只做一件事儿,判断业务逻辑(判断行是否大于0,告诉界面这个用户是否能登入)检测用户是否存在,返回Bool值。

        Controller部分:调用规则层ToEmail.Rule。

        运行后,一级一级向下访问,最后访问到数据层。

        层是分出来了,但这里如果不止是Name和Pwd两个参数,还想要添加几个,修改起来就很麻烦,欲知如何处理,请看下篇。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值