zoukankan      html  css  js  c++  java
  • 写个三层代码

            要找个主题去发表一下,面对技术人士,还真难拿出什么来讲。写个啥。

            参考:LTP代码生成器,PetShop4.0,正题:

            数据库设计:

    同样很重要的一个过程,直接与后期测试、发布与维护的成功与否相关。

    UserInfo:

    1            U_ID             int    4            0

    0            U_Name         varchar          20           0

    0            U_Pass           varchar          32           0

    0            U_Mail           varchar          100         1

    备注:此数据表只为熟悉三层设计,其他的数据表因注意其他设计,加入必须的AddBy、AddTime、AddIp、UpdateBy、UpdateTime、UpdateIp、Remark、standbyCol等。

     

    设计步骤:

    1、  新建网站与解决方案personalOA,配置IIS,新建数据库。

     

    2、  逐个新建类库Model、IDAL、SQLServerDAL、DALFactory、BLL,最后新建网站Web。

    注意:每个类库与网站都要设为personalOA引用程序集,即在属性里增加personalOA.。

     

    3、  Model层(UserInfo.cs):

    using System;

     

    namespace personalOA.Model

    {

        
    /// <summary>

        
    /// 实体类UserInfo

        
    /// </summary>


        
    public class UserInfo

        
    {

            
    public UserInfo()

            
    { }

            
    Model Model

        }


    }


     

    4、  IDAL层(IUserInfo.cs):

    添加引用Model

    using System;

    using System.Data;

     

    namespace personalOA.IDAL

    {

        
    /// <summary>

        
    /// 接口层IUserInfo 的摘要说明。

        
    /// </summary>


        
    public interface IUserInfo

        
    {

            
    成员方法  成员方法

        }


    }


     

    5、  SQLServerDAL层(UserInfo.cs):

    添加引用Model、IDAL和System.Configuration

    using System;

     
    using System.Data;

     
    using System.Text;

     
    using System.Data.SqlClient;

     
    using personalOA.IDAL;

     

    namespace personalOA.SQLServerDAL

    {

         
    /// <summary>

         
    /// 数据访问类UserInfo。

         
    /// </summary>


       

            
    public class UserInfo : IUserInfo

            
    {

                
    public UserInfo()

                
    { }

                
    成员方法  成员方法

         }


    }


     

    在SQLServerDAL里还有一个基础库类DbHelperSQL.cs,因为太多,将它独立拿出写到其他日志里。

    注意:在DbHelperSQL.cs中用到Using.Configuration;在引用中添加using Configuration,即是用ConfigurationManager来代替ConfigurationSettings,否则在2.0中会出现过时警告:警告  “System.Configuration.ConfigurationSettings.AppSettings”已过时:“This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings” 

     

    备注:在PetShop4.0中把基础库类写到类库DBUtility里,我觉得没有必要为它重新加一个类库,只是为了方便理解。



    6、  DALFactory层(UserInfo.cs):

    添加引用IDAL和System.Web、System.Configuration

    using System;

    using System.Reflection;

    using System.Configuration;

    using personalOA.IDAL;

     

    namespace personalOA.DALFactory

    {

        
    /// <summary>

        
    /// 工厂类UserInfo 的摘要说明。

        
    /// web.config 需要加入配置:(利用工厂模式+反射机制+缓存机制,实现动态创建不同的数据层对象接口)

        
    /// DataCache类在导出代码的文件夹里

        
    /// <appSettings>

        
    /// <add key="DAL" value="personalOA.SQLServerDAL" /> (这里的命名空间根据实际情况更改为自己项目的命名空间)

        
    /// </appSettings>

        
    /// </summary>


        
    public class UserInfo

        
    {

            
    public static IUserInfo Create()

            
    {

                
    string path =ConfigurationManager.AppSettings["DAL"];

                
    string CacheKey = path + ".UserInfo";

                
    object objType = DataCache.GetCache(CacheKey);

                
    if (objType == null)

                
    {

                    
    try

                    
    {

                        objType 
    = Assembly.Load(path).CreateInstance(CacheKey);

                        DataCache.SetCache(CacheKey, objType);
    // 写入缓存

                    }


                    
    catch { }

                }


                
    return (IUserInfo)objType;

            }


        }


    }


     

    注意:引用System.Web是为了设置工厂模式与反射机制。

    在DALFactory里还有DataCache.cs,它提供了GetCache与SetCache两种方法提供反射机制,当然可以直接用System.Web定义,为了方便理解,这样分开更直观。

    DataCache.cs:

    using System;

    using System.Web;

     

    namespace personalOA.DALFactory

    {

         
    /// <summary>

         
    /// 缓存相关的操作类

         
    /// </summary>


         
    public class DataCache

         
    {

             
    /// <summary>

             
    /// 获取当前应用程序指定CacheKey的Cache值

             
    /// </summary>

             
    /// <param name="CacheKey"></param>

             
    /// <returns></returns>


             
    public static object GetCache(string CacheKey)

             
    {

     

                  System.Web.Caching.Cache objCache 
    = HttpRuntime.Cache;

                  
    return objCache[CacheKey];

     

             }


     

             
    /// <summary>

             
    /// 设置当前应用程序指定CacheKey的Cache值

             
    /// </summary>

             
    /// <param name="CacheKey"></param>

             
    /// <param name="objObject"></param>


             
    public static void SetCache(string CacheKey, object objObject)

             
    {

                  System.Web.Caching.Cache objCache 
    = HttpRuntime.Cache;

                  objCache.Insert(CacheKey, objObject);

             }


         }


    }





    备注:在PetShop4.0中,把这2个类写到了DataAccess.cs里,区别不大。

     

    7、  BLL层(UserInfo.cs):

    添加引用DALFactory、IDAL和Model

    using System;

    using System.Data;

    using System.Data.SqlClient;

    using System.Text;

    using personalOA.IDAL;

     

    namespace personalOA.BLL

    {

        
    /// <summary>

        
    /// 业务逻辑类UserInfo 的摘要说明。

        
    /// </summary>


        
    public class UserInfo

        
    {

            
    public UserInfo()

            
    { }

            
    成员方法  成员方法

        }


    }





    8、  Web层(LoginIn.aspx):

    引用BLL、Model和SQLServerDAL。

    以下是BtnLoginIn_Click事件的代码:

    protected void BtnLoginIn_Click(object sender, EventArgs e)

        
    {

            
    string PName, PPwd;

            PName 
    = TxtPName.Text.Trim();

            PPwd 
    = TxtPPwd.Text.Trim();

            UserInfo b
    =new UserInfo();

          

            
    if (b.Exists(PName,PPwd) == true)

            
    {

                Response.Redirect(
    "Main.aspx");

            }


            
    else

            
    {

                Response.Write(
    "<script>alert('输入错误!')</script>");

                Response.Redirect(
    "LoginIn.aspx");

            }


    }





    9、  运行,成功!

  • 相关阅读:
    Django的一点基本知识点
    python函数定义及作用域
    爬取妹子图片
    mysql常用命令大全
    python扫面端口
    python中重要的基础概念
    pexpect模块获取root密码
    mysql
    requests库
    C#中使用SQLite数据库简介(上)
  • 原文地址:https://www.cnblogs.com/liangyi/p/1229163.html
Copyright © 2011-2022 走看看