C#版机房重构登录(不完整版)

来源:互联网 发布:淘宝收藏宝贝送优惠券 编辑:程序博客网 时间:2024/06/10 22:30

傻傻的开始了机房重构,先开始一点思路都没有,现在虽然说弄出了一个窗体,但是还是傻傻的,由于咱们看过了三层视频,所以说登录应该是没有什么问题的,但是在期间我还是浪费了很多的时间去理解,现在总算弄出一个雏形来了,很开心,下面小编和小伙伴们分享一下我的登录吧。


页面

登录
登录后
点击确定

代码

B层

 public Machine.Model.Users UserLogin(string userName, string passWord)        {            Machine.DAL.UserDAO uDao=new Machine.DAL.UserDAO ();//实例化D层            Machine.Model.Users user = uDao.SelectUser(userName, passWord);//调用(D层连接数据库的)用户名和密码            return user;        }

D层

数据库链接:CtDataBase

class CtDataBase    {        public static string ConnString = @"Server=WXN;Database=MachineAgain_sys;User ID=sa;PassWord=123456";    }

数据库查询:UserDAO

public class UserDAO    {        public Machine.Model.Users SelectUser(string UserID, string PassWord)        {            using (SqlConnection conn = new SqlConnection(CtDataBase.ConnString))            {                SqlCommand cmd = conn.CreateCommand();                //select 字段 from 数据库表 where 字段名=@字段名 and 密码=@密码                cmd.CommandText = @"Select userID,passWord From Users Where userID=@userID And passWord=@passWord";                cmd.CommandType = CommandType.Text;//获取或者设置一个值,该值解释commandtext的属性                cmd.Parameters.Add(new SqlParameter("@userID", UserID));//设置参数用户名                cmd.Parameters.Add(new SqlParameter("@passWord", PassWord));//设置参数密码                conn.Open();//打开链接                SqlDataReader reader = cmd.ExecuteReader();//对用户进行查询,sqldatareader在数据库中惊醒逐行读取                Machine.Model.Users user = null;//构造user,默认null                while (reader.Read())//读取具体数据                {                    reader.GetInt32(0);//获取值                    if (user == null)                    {                        user = new Machine.Model.Users();//实例化D层                    }                    user.userID = reader.GetInt32(0);//读取用户名,并且转化成字符串型                    user.passWord = reader.GetString(1);//读取数据库中的密码                }                return user;            }        }

U层

    /*作者:十二期-王雪娜     *日期:2016年01月25日     *地点:廊坊师范学院信息技术提高班     *版本:v1.1     *名称:登录窗体     */    public partial class frmLogin : Form    {        public frmLogin()        {            InitializeComponent();        }        private void btnLogin_Click(object sender, EventArgs e)        {          //点击确定按钮            //判断用户名和密码是否为空            if (txtUserName.Text == "")            {                MessageBox.Show("用户名不能为空!");                txtUserName.Focus();                return;            }            if (txtPassWord.Text == "")            {                MessageBox.Show("密码不能为空!");                txtPassWord.Focus();                return;            }            string username = txtUserName.Text.Trim();//把txtUserName的text属性去掉前后空格赋值给字符串类型变量username            string password = txtPassWord.Text;//把txtPassWord的text属性去掉前后空格赋值给字符串类型变量password            Machine.BLL.LoginManage ngr = new Machine.BLL.LoginManage();//实例化逻辑层业务            Machine.Model.Users user = ngr.UserLogin(username, password);//给实体层user赋值            if (user  != null  )            {                MessageBox.Show("登录成功");                frmMain NewfrmMain = new frmMain();                frmMain.isRunMain = true;                NewfrmMain.Show();                this.Close(); // 关掉自身            }            else if(user==null )            {                MessageBox.Show("登录失败");//显示登录失败            }                   }        private void btnCancel_Click(object sender, EventArgs e)        {            this.Dispose();//退出窗体或程序        }    }

以上是自己最近登录弄出来的一些东西,很多东西真的在于理解,并不是别人弄了你也按照别人的弄了你就会了,而是你和别人的不同但是还是实现了一样的功能,所以要善于发现和创新,并且要大胆。

问题

虽然上面看着这么华丽,但是私下却没有那么顺利,所以还是遇到问题了,遇到的问题就是关于命名空间的,最初看三层视频的时候王继斌老师就说了建立解决方案后第一步要做的就是修改命名空间,当然我也修改了,但是没改全,我的U层的命名空间在建立frmLogin窗体之后才修改的,导致frmLogin的命名空间为MachineUI.frmLogin。而之后建立的所有窗体的命名空间均为Machine.UI,仅一点之差就麻烦大了,在网上查找了也没查到解决办法,有的小伙伴由于敲得代码不多干脆从头再来,但是问题是我懒呀,所以不想从头再来,于是自己就鼓捣,最后还是弄出来了。

解决办法

分别将frmLogin、frmLogin代码块和Program.cs的命名空间均修改为Machine.UI即可,是不是既简单又方便啊,希望能帮助很多人解决问题,一起加油。

记得永远相信你自己,没有做不到的,信心是最好的老师。

0 0