前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三层学习

三层学习

作者头像
wfaceboss
发布2019-04-08 11:39:28
3650
发布2019-04-08 11:39:28
举报
文章被收录于专栏:wfacebosswfaceboss

注意:

(1)DBhelp类 总的CRUD,对应整个数据库表的操作,用以接受具体某一张表传入参数,进行CRUD,并返回结果。

代码语言:javascript
复制
public class DBHelper
    {
        private static SqlConnection conn = new SqlConnection("server=.;database=HR;uid=sa;pwd=;");
        /// <summary>
        /// 封装SqlCommand对象的ExecuteNonQuery方法
        /// </summary>
        /// <param name="strsql">传入以insert|update|delete打头的SQL语句</param>
        /// <returns>返回执行影响的行数</returns>
        public static int ExecuteNonQuery(string strsql)
        {
            SqlCommand comm = new SqlCommand(strsql, conn);
            try
            {
                conn.Open();
                return comm.ExecuteNonQuery();
            }
            catch
            {
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
        /// <summary>
        /// 返回数据集DataSet
        /// </summary>
        /// <param name="strsql">以Select打头的SQL语句</param>
        /// <returns>返回DataSet对象</returns>
        public static DataSet GetDataSet(string strsql)
        {
            SqlDataAdapter da = new SqlDataAdapter(strsql, conn);
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds);
                return ds;
            }
            catch
            {
                throw;
            }
        }
        /// <summary>
        /// 返回DataTable对象
        /// </summary>
        /// <param name="strsql">以Select打头的SQL语句</param>
        /// <returns>返回DataTable对象</returns>
        public static DataTable GetDataTable(string strsql)
        {
            DataSet ds = GetDataSet(strsql);
            if (ds != null)
            {
                return ds.Tables[0];
            }
            else
                return null;
        }
        /// <summary>
        /// 返回首行首列的单元格的值(封装Command对象的ExecuteScalar方法)
        /// </summary>
        /// <param name="strsql">Select打头的SQL语句</param>
        /// <returns>返回的是Object</returns>
        public static object GetScalar(string strsql)
        {
            SqlCommand comm = new SqlCommand(strsql, conn);
            try
            {
                conn.Open();
                return comm.ExecuteScalar();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
    }

(2)xxxxService,具体某一张表的CRUD  使用方法如下:

                     第一,使用内部的方法,通过sql得到值。

                     第二,使用sql查询出并调用内部的方法。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using TheOneHR.Models;

namespace TheOneHR.DAL
{
    public class UserInfoService
    {
        private static IList<UserInfo> GetUsersBySQL(string strsql)//内部方法  泛型集合
        {
            IList<UserInfo> users = new List<UserInfo>();
            DataTable dt = DBHelper.GetDataTable(strsql);
            if (dt != null)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    UserInfo user = new UserInfo();
                    user.Id =int.Parse( dt.Rows[i]["Id"].ToString());
                    user.User_name = dt.Rows[i]["Users_name"].ToString();
                    user.User_password = dt.Rows[i]["Users_password"].ToString();
                    //注意外键列的处理
                    user.Sys_role = Sys_roleService.GetSys_roleById(int.Parse(dt.Rows[i]["Roleno"].ToString()));
                    users.Add(user);
                }
 
            }
            return users;
        }
        /// <summary>
        /// 得到所有用户列表
        /// </summary>
        /// <returns></returns>
        public static IList<UserInfo> GetAllUserInfos()
        {
            string strsql = "select * from UserInfo";
            return GetUsersBySQL(strsql);

        }
        /// <summary>
        /// 根据用户ID得用户实体
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static UserInfo GetUserById(int id)
        {
            string strsql = "select * from UserInfo where Id=" + id.ToString();
            try
            {
                return GetUsersBySQL(strsql)[0];
            }
            catch
            {
                return null;
            }
        }
        /// <summary>
        /// 添加一个用户
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public static int AddUser(UserInfo user)
        {
            string strsql = string.Format("INSERT INTO [UserInfo] ([Users_name],[Users_password] ,[Roleno])VALUES('{0}','{1}',{2})", user.User_name, user.User_password, user.Sys_role.Id);
            return DBHelper.ExecuteNonQuery(strsql);
        }
        /// <summary>
        /// 修改一个用户信息
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public static int ModifyUser(UserInfo user)
        {
            string strsql = string.Format("UPDATE [UserInfo] SET [Users_name] = '{0}',[Users_password] = '{1}' ,[Roleno] = {2} WHERE Id={3}", user.User_name, user.User_password, user.Sys_role.Id, user.Id);
            return DBHelper.ExecuteNonQuery(strsql);
        }
        /// <summary>
        /// 删除一个用户
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static int DelUser(int id)
        {
            string strsql = "delete from UserInfo where Id=" + id.ToString();
            return DBHelper.ExecuteNonQuery(strsql);
        }
        /// <summary>
        /// 根据帐号得用户实体
        /// </summary>
        /// <param name="loginId">登录帐号</param>
        /// <returns></returns>
        public static UserInfo GetUserByLoginId(string loginId)
        {
            string strsql = string.Format("select * from UserInfo where Users_name='{0}'", loginId);
            try
            {
                return GetUsersBySQL(strsql)[0];
            }
            catch
            {
                return null;
            }
 
        }

    }
}

注意,每层之间类的使用,第一是:添加引用,第二是:命名空间的导入  ,数据访问层需要使用模型层的数据(模型中的类),在数据访问层需要使用模型层的命名空间

业务逻辑层是对数据访问层的进一步封装。便于界面层访问数据,起桥梁的作用。业务逻辑层需要使用:模型层,数据访问层 的命名空间。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Text;
using TheOneHR.Models;
using TheOneHR.DAL;


namespace TheOneHR.BLL
{
    public class UserInfoManager
    {
        /// <summary>
        /// 得到所有用户列表
        /// </summary>
        /// <returns></returns>
        public static IList<UserInfo> GetAllUserInfos()
        {
            return TheOneHR.DAL.UserInfoService.GetAllUserInfos();//使用数据访问层的方法
        }
        /// <summary>
        /// 根据用户ID得用户实体
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static UserInfo GetUserById(int id)
        {
            return TheOneHR.DAL.UserInfoService.GetUserById(id);
        }
        /// <summary>
        /// 添加一个用户
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public static bool AddUser(UserInfo user)//添加成功或失败
        {
            return TheOneHR.DAL.UserInfoService.AddUser(user)>0; //大于0则返回true  等于0则返回false
        }
        /// <summary>
        /// 修改一个用户信息
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public static bool ModifyUser(UserInfo user)
        {
            return TheOneHR.DAL.UserInfoService.ModifyUser(user)>0;
        }
        /// <summary>
        /// 删除一个用户
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool DelUser(int id)
        {
            return TheOneHR.DAL.UserInfoService.DelUser(id)>0;
        }

    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-01-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档