.net 三层架构


好久没写博客了,更新一下吧!

三层架构学习,一直觉得太麻烦了,几行代码能写出来的,硬是绕一大圈。不过学了一点软件工程和UML,还是硬着头皮学下去。

上图是数据 库,下面写三层代码。

Model模型层,但他不算在三层结构中,用于传递数据。

  class T_Seats
    {
        private int id;

        private string username;

        private string password;

        public int Id
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }

        public string UserName
        {
            get
            {
                return username;
            }
            set
            {
                username = value;
            }
        }

        public  string Password
        {
            get
            {
                return password;
            }
            set
            {
                password=value;
            }
        }

}

定义了属性和字段。

数据访问层(表的功能实现)

sqlhelper类 公用代码。

  class SqlHelper
    {
        public static readonly string connstr =
            ConfigurationManager.ConnectionStrings["username"].ConnectionString;

        public static int ExecuteNonQuery(string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = cmdText;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteNonQuery();
                }
            }
        }

        public static object ExecuteScalar(string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = cmdText;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteScalar();
                }
            }
        }

        public static DataTable ExecuteDataTable(string cmdText,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = cmdText;
                    cmd.Parameters.AddRange(parameters);
                    using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
                    {
                        DataTable dt = new DataTable();
                        adapter.Fill(dt);
                        return dt;
                    }
                }
            }
        }

        public static SqlDataReader ExecuteDataReader(string cmdText,
            params SqlParameter[] parameters)
        {
            SqlConnection conn = new SqlConnection(connstr);
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = cmdText;
                cmd.Parameters.AddRange(parameters);
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
        }
    }

T_Seats表类,用于实现一个表的增、删、改、查的数据库代码

    class T_SeatsDAL
    {
        public T_Seats getusername(string str)
        {
            DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Seats where UserName=@username", new SqlParameter("@username", str));
            if (dt.Rows.Count <= 0)
            {
                return null;
            }
            else if (dt.Rows.Count == 1)
            {
                DataRow dr = dt.Rows[0];
                return ToModel(dr);
            }
            else
            {
                throw new Exception("出现重复的用户名");
            }
        }
        public int AddNew(T_Seats model)
        {
            string sql = "insert into T_Seats(UserName,Password) output inserted.id values(@UserName,@Password)";
            int id = (int)SqlHelper.ExecuteScalar(sql
            ,new SqlParameter("UserName", model.UserName)
            , new SqlParameter("Password", model.Password)
            );
            return id;
        }
        public bool Update(T_Seats model)
        {
            string sql = "update T_Seats set UserName=@UserName,Password=@Password where id=@id";
            int rows = SqlHelper.ExecuteNonQuery(sql
            , new SqlParameter("Id", model.Id)
            , new SqlParameter("UserName", model.UserName)
            , new SqlParameter("Password", model.Password)
            );
            return rows > 0;
        }
        public bool Delete(int id)
        {
            int rows = SqlHelper.ExecuteNonQuery("delete from T_Seats where id=@id",
            new SqlParameter("id", id));
            return rows > 0;
        }
        private static T_Seats ToModel(DataRow row)
        {
            T_Seats model = new T_Seats();
            model.Id = (System.Int32)row["Id"];
            model.UserName = (System.String)row["UserName"];
            model.Password = (System.String)row["Password"];
            return model;
        }
        public T_Seats Get(int id)
        {
            DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Seats  where id=@id",
            new SqlParameter("id", id));
            if (dt.Rows.Count > 1)
            { throw new Exception("more than 1 row was found"); }
            if (dt.Rows.Count <= 0) { return null; }
            DataRow row = dt.Rows[0];
            T_Seats model = ToModel(row);
            return model;
        }
        public IEnumerable<T_Seats> ListAll()
        {
            List<T_Seats> list = new List<T_Seats>();
            DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Seats");
            foreach (DataRow row in dt.Rows)
            {
                list.Add(ToModel(row));
            }
            return list;
        }

    }


业务逻辑层(不能出现数据库代码和system.data下的东西)


    partial class T_SeatsBLL
    {

       //查找用户名
        public bool validateusername(string a,string password)
        {
            T_Seats ts = new T_Seats();
            T_SeatsDAL td=new T_SeatsDAL();
            ts = td.getusername(a);
            if (ts == null)
            {
                return false;
            }
            else if(ts.Password==password)
            {
                return true;
            }
            return false;
        }

//添加数据行
        public int AddNew(T_Seats model)
        {
            return new T_SeatsDAL().AddNew(model);
        }

//删除数据行
        public bool Delete(int id)
        {
            return new T_SeatsDAL().Delete(id);
        }

//更新数据行
        public bool Update(T_Seats model)
        {
            return new T_SeatsDAL().Update(model);
        }
        public T_Seats Get(int id)
        {
            return new T_SeatsDAL().Get(id);
        }
        public IEnumerable<T_Seats>ListAll()
        {
            return new T_SeatsDAL().ListAll();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值