用C#模拟 Java Bean (三)—— Control

来源:互联网 发布:阿里云linux安装桌面 编辑:程序博客网 时间:2024/05/21 12:48

啊,百度了下 Pojo Java Bean 的含义,感觉怪奇怪的。

考虑话换个名字:用C#模拟实现 数据库实体 SqlPojo,但之前已经发了,就懒得改了,大概这意思就行。


然后昨晚在msdn上查了一下 泛型,哎哟我擦,以前以为是 var 泛化类型,觉得是 php 那样的弱化类型,结果发现原来是C++的Template模板。

好吧,根据这个修改了一下 DBHelper 的 Single 方法。


然后,我还没事查了一下 MVC,没了解清楚,简单的实验了下,做了 模型控制类 Control:

示例:UserControl


using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Collections;using System.Data;//namespace User//{    /// <summary>    /// UserControl 的摘要说明    /// </summary>    public class UserControl    {        public UserControl()        {            //            // TODO: 在此处添加构造函数逻辑            //        }        private const string LoginTemplate = "Select * From [_Login] Where [UserName] = '{0}' AND [PassWord] = '{1}'";        private const string GetUserTemplate = "Select * From [_Login] Where [AuthStr] = '{0}'";        public static void CheckLogin(_Login user)        {            if (user == null || user.Uid == 0L)            {                throw new ActionFaildException(Constants.AR_Code_LoginError, "请先登录.");            }        }        public static _Login Login(Hashtable param)        {            Constants.ParamCheck(new string[] { "UserName", "PassWord" }, param);            _Login login = new _Login();            string userName = param["UserName"].ToString();            string passWord = param["PassWord"].ToString();            string sql = string.Format(UserControl.LoginTemplate, userName, passWord);            login = (_Login)DBHelper.ExecuteQuery(sql, login);            if (login == null)            {                throw new ActionFaildException(Constants.AR_Code_WrongPassword, "账号或密码错误.");            }            else            {                return login;            }        }        public static int UpdateUserInfo(_Login user, Hashtable param)        {            UserControl.CheckLogin(user);            UserInfo info = new UserInfo();            info.LoadFromHashtable(param);            info.Uid = user.Uid;            return DBHelper.Update(info);        }        public static UserInfo Regist(Hashtable param)        {            Constants.ParamCheck(new string[] { "UserName", "PassWord" }, param);            // 插入 _Login 记录            _Login login = new _Login();            login.LoadFromHashtable(param);            login.GroupCode = 1;            login.AuthStr = Guid.NewGuid().ToString();            DBHelper.Insert(login);            login = UserControl.Login(param);            // 插入 UserInfo 记录            UserInfo info = new UserInfo();            info.LoadFromHashtable(param);            info.Uid = login.Uid;            DBHelper.Insert(info);            V_UserInfo v = new V_UserInfo();            v.Uid = info.Uid;            return (V_UserInfo)DBHelper.Single(v);        }        /// <summary>        /// 根据身份串获取用户        /// 身份串为空 或 未知的身份串 则返回 null        /// </summary>        /// <param name="authStr">用户身份串</param>        /// <returns></returns>        public static _Login GetUser(string authStr)        {            if (Constants.IsNull(authStr))            {                return null;            }            string sql = string.Format(UserControl.GetUserTemplate, authStr);            _Login login = new _Login();            return (_Login)DBHelper.ExecuteQuery(sql, login);        }        public static int ChangePassWord(_Login user, Hashtable param)        {            string passWord = Constants.GetParam(param, "PassWord");            string newPassWord = Constants.GetParam(param, "NewPassWord");            if (passWord.Equals(user.PassWord))            {                user.PassWord = newPassWord;                return DBHelper.Update(user);            }            else            {                throw new ActionFaildException(Constants.AR_Code_WrongPassword, "密码错误.");            }        }        public static V_UserInfo GetMyInfo(_Login user)        {            UserControl.CheckLogin(user);            return UserControl.GetUserInfo(user.Uid);        }        private static V_UserInfo GetUserInfo(long uid)        {            V_UserInfo v = new V_UserInfo();            v.Uid = uid;            return (V_UserInfo)DBHelper.Single(v);        }    }//}

哦,这还是旧版的。

贴一个新版的 DBHelper.Single 方法:


    public static T Single<T>(string sql) where T : SqlPojo, new()    {        T t = new T();        DataRow dr = DBHelper.ExecuteQuery(sql);        t.LoadFromDataRow(dr);        return t;    }

where T : SqlPojo, new()

限定符,表示 T类型 派生自 SqlPojo 并且具有 空参的构造函数

0 0
原创粉丝点击