【机房重构】-七层

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/suzan_bingtong/article/details/83243485

开发顺序

1.创建Entity,实现业务实体。 

2.创建IDAL,实现接口。 

3.创建DAL,实现接口里的方法。 

4.增加APP.config里的配置信息,为提供DAL的程序集。 

5.创建Factory,返回程序集的指定类的实例。 

6.创建BLL,调用Factory,得到程序集指定类的实例,完成数据操作方法。

7.建Facade,调用BLL,得到BLL层的处理结果返回值。

8.创建UI,调用Facade里的数据操作方法,实现登录。 

各层调用关系

Entity实体层

namespace Entity
{
 
        public class UserInfo
        {
            //定义 用户ID 字段
            private int userid;
            public int UserID
            {
                get { return userid; }
                set { userid = value; }
            }

            //定义 用户名 字段
            private string userName;
            public string UserName
            {
                get { return userName; }
                set { userName = value; }

            }

            //定义 密码 字段
            private string password;
            public string PassWord
            {
                get { return password; }
                set { password = value; }
            }

            //定义 级别 字段
            private string level;
            public string Level
            {
                get { return level; }
                set { level = value; }
            }

            //定义 状态 字段
            private bool state; 
            public bool State
            {
                get { return state; }
                set { state = value; }
            }
        
    }
}

IDAL接口层

namespace IDAL
{
    public interface LoginIDAL
    {
        DataTable selectUser(Entity.UserInfo UserInfo);
    }
}

DAL层

namespace DAL
{
    public class LoginDAL:IDAL.LoginIDAL
    {
        public DataTable selectUser(Entity.UserInfo UserInfo)
        {
            SQLHelper sqlHelper = new SQLHelper();
            SqlParameter[] sqlParams = {new SqlParameter("@userID", UserInfo.UserID),
                                        new SqlParameter("@PassWord", UserInfo.PassWord) };
            string sql = @"SELECT * FROM [User_Info] WHERE UserID=@UserID and PWD=@PassWord";
            DataTable table = sqlHelper.ExecuteQuery(sql, sqlParams, CommandType.Text);
            return table;
        }
    }
}
namespace DAL
{
    public class SQLHelper
    {
        private SqlConnection conn = null;
        private SqlCommand cmd = null;
        private SqlDataReader sdr = null;
        public SQLHelper()
        {
            string connStr = System.Configuration.ConfigurationManager.AppSettings["connStr"];
            conn = new SqlConnection(connStr);
        }
        private SqlConnection GetConn()
        {
            if (conn.State == ConnectionState.Closed )
            {
                
                conn.Open();
            }
            return conn;
        }
        ///<summary>
        ///执行不带参数的增删改SQL语句或者存储过程
        ///</summary>
        ///<param name="cmdTect">增删改查SQL</param>
        ///<return>返回受影响的行数</return>>
        public int ExecuteNonQuery(string cmdText, CommandType ct)
        {
            int res;
            try
            {
                cmd = new SqlCommand(cmdText, GetConn());
                cmd.CommandType = ct;
                res = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            return res;
        }
        /// <summary>
        /// 执行带参数的的增删改SQL语句或者存储过
        /// </summary>
        /// <param name="cmdText">增删改查SQL</param>
        /// <param name="paras">要查询的参数</param>
        /// <param name="ct">命令类型</param>
        /// <returns>返回受影响的行数</returns>
        public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)
        {
            int res;
            using (cmd = new SqlCommand(cmdText, GetConn()))
            {
                cmd.CommandType = ct;
                cmd.Parameters.AddRange(paras);
                res = cmd.ExecuteNonQuery();
            }            
            return res;
        }
        /// <summary>
        /// 执行带参数的查询SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">查询SQL语句或存储过程</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string cmdText, CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText,GetConn());
            cmd.CommandType = ct;
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }
        /// <summary>
        /// 执行带参数的查询SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">查询SQL语句或存储过程</param>
        /// <param name="paras">参数集合</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>

        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = ct;
            cmd.Parameters.AddRange(paras);
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }
        
    }
}

BLL层

namespace BLL
{
    public class LoginBLL
    {
        public bool UserBLL(Entity.UserInfo UserInfo)
        {
            Factory.LoginFactory fact = new Factory.LoginFactory();
            IDAL.LoginIDAL idal = fact.CreateUser();
            DataTable table = idal.selectUser(UserInfo);
            bool flag;
            if (table.Rows.Count == 0)
            {
                flag = false;
            }
            else
            {
                flag = true;
            }
            return flag;
        }
    }
}

Factory

namespace Factory
{
    public class LoginFactory
    {
        string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];

        public IDAL.LoginIDAL CreateUser()
        {
            string ClassName = StrDB + "." + "LoginDAL";//DAL层的类名             
            return (IDAL.LoginIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);  //反射加
                                                                                //工厂的应用              
        }

    }
}

BLL

namespace BLL
{
    public class LoginBLL
    {
        public bool UserBLL(Entity.UserInfo UserInfo)
        {
            Factory.LoginFactory fact = new Factory.LoginFactory();
            IDAL.LoginIDAL idal = fact.CreateUser();
            DataTable table = idal.selectUser(UserInfo);
            bool flag;
            if (table.Rows.Count == 0)
            {
                flag = false;
            }
            else
            {
                flag = true;
            }
            return flag;
        }
    }
}

Facade

namespace Facade
{
    public class LoginFacade
    {
        public bool selectUser(Entity.UserInfo userInfo)
        {
            bool Flag;
            BLL.LoginBLL userBLL = new BLL.LoginBLL();
            Flag = userBLL.UserBLL(userInfo);
            return Flag;
        }
    }
}

UI

namespace UI
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

猜你喜欢

转载自blog.csdn.net/suzan_bingtong/article/details/83243485
今日推荐