zoukankan      html  css  js  c++  java
  • 三层学习

    注意:

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

    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查询出并调用内部的方法。

    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;
                }
     
            }
    
        }
    }

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

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

    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;
            }
    
        }
    }
  • 相关阅读:
    netty系列之:基于流的数据传输
    netty系列之:中国加油
    netty系列之:Event、Handler和Pipeline
    netty系列之:netty中的Channel详解
    netty系列之:netty架构概述
    Python 列表解析式竟然支持异步?
    Python 数值中的下划线是怎么回事?
    Nginx+keepalived 双机主从模式下修改主Nginx自动同步nginx.conf配置文件至备Nginx
    Oracle nvarchar2存储特殊字符乱码问题
    Oracle 11.2.0.4.0版本下大表添加默认值字段影响因素
  • 原文地址:https://www.cnblogs.com/wfaceboss/p/6341506.html
Copyright © 2011-2022 走看看