用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
- 用C#模拟 Java Bean (三)—— Control
- 用C#模拟 Java Bean (一)—— DBHelper
- 用C#模拟 Java Bean (二)—— SqlPojo
- 用C#模拟 Java Bean (四)—— Manage
- 用C#模拟 Java Bean (五)—— index.html
- 用C#模拟 Java Bean (六)—— Demo.zip
- 用C#模拟 Java Bean (七) —— 里程碑的思考
- Java之旅EJB(2)——三种bean之会话bean
- Spring(18)——使用Java类的形式配置bean(三)
- C# WinForm多线程开发(三) Control.Invoke
- 模拟模拟交易系统(三)——UI设计
- Ejb in action(三)——Session Bean
- 深入理解Spring4框架(三)——Bean
- 深入理解Spring4框架(三)——Bean
- spring in action笔记(三)——配置bean
- Java动态代理三——模拟AOP实现
- Java动态代理三——模拟AOP实现
- Spring(三)——核心容器Bean
- Erlang笔记(04) - 基本Erlang数据类型
- 面试经验摘抄-留给自己看
- hdu4745 最长回文子序列
- git命令总结
- sdasd
- 用C#模拟 Java Bean (三)—— Control
- Flex4 关于 as 和 is 的使用的提要
- 快速解决低版本Xcode不支持高版本iOS真机调试问题
- 屏幕广播的实现(一)
- 跟我一起学Makefile
- vc 连接sqlite数据库 步骤详解
- 利用开源浏览器 引擎 制作最简单的 浏览器 webkit cefsharp
- 代码民工or编程艺术
- 【VC6.0】多行注释和反注释的方法