【ASP.NET MVC】使用动软(三)(11)

一、问题

上文中提到,动软提供了数据库的基本操作功能,但是往往需要添加新的功能来解决实际问题,比如GetModel,通过id去查对象:

这个功能就需要进行改进:往往程序中获取的是实体的其他属性,比如用户登录的时提供账号名和密码,需要根据账户名(唯一)去获取数据库中的实体信息,而不是 id 。

二、解决

通过id查对象和通过其他属性查对象应该是非常类似的,可以 "照葫芦画瓢 "!

1、先在BLL中添加函数,这里利用的是函数重载(参数类型不同)

对比上下两个函数,参数不同而已。

2、在DAL中先找到GetModel函数

很显然,拷贝后,简单修改一下就可以使用利用账号名查找 的GetModel函数了

3、添加代码:

复制代码
 public Maticsoft.Model.user GetModel(string username)
		{
			
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select id,userID,password,userName from user ");
            strSql.Append(" where userID=@username");
			MySqlParameter[] parameters = {
					new MySqlParameter("@userName", MySqlDbType.VarChar)
			};
            parameters[0].Value = username;

			Maticsoft.Model.user model=new Maticsoft.Model.user();
			DataSet ds=DbHelperMySQL.Query(strSql.ToString(),parameters);
			if(ds.Tables[0].Rows.Count>0)
			{
				return DataRowToModel(ds.Tables[0].Rows[0]);
			}
			else
			{
				return null;
			}
		}

DAL里两个函数的关系:

由此,对动软生成的功能进行了扩展。比如登录时候的验证代码:

复制代码
       [HttpPost]
        public ActionResult Login(string msg)
        {
            JObject jobject = JObject.Parse(msg);
            string username = (string)jobject["username"];
            string password = (string)jobject["password"];
            Maticsoft.BLL.user bll = new Maticsoft.BLL.user();
            string pwd1 = UserCookie.Encrypt(password);
            Maticsoft.Model.user mod = bll.GetModel(username);
            if (mod == null)
            {
                return Content("error");
            }

            if (password != null)
            {
                string pwd = UserCookie.Encrypt(password);
                if (pwd == mod.password)
                {
                    UserCookie.WriteCookie(mod);
                    return Content("OK");
                }
                else
                    return Content("error");
            }
            return Content("error");
        }

其中: Maticsoft.Model.user mod = bll.GetModel(username);

则是利用提交的用户名(唯一)去获取数据库中对应记录的信息。(拓展功能)

以上有对密码加密、写入Cookie等功能,后文再介绍。

相关推荐
怒放吧德德2 小时前
Spring Boot 实战:RSA+AES 接口全链路加解密(防篡改 / 防重放)
java·spring boot·后端
陈随易5 小时前
真的,你可以不用TypeScript
前端·后端·程序员
郑州光合科技余经理5 小时前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
李慕婉学姐6 小时前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
掘金酱6 小时前
「寻找年味」 沸点活动|获奖名单公示🎊
前端·人工智能·后端
颜酱6 小时前
栈的经典应用:从基础到进阶,解决LeetCode高频栈类问题
javascript·后端·算法
玹外之音7 小时前
Spring AI MCP 无状态服务器实战:构建AI智能用户管理系统
java·后端
what丶k7 小时前
Spring AI 多模态开发全解析:从入门到企业级落地
后端·spring·ai编程
ATCB7 小时前
零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)
后端·python·django
雨落Re7 小时前
从设计到开发,过年我用十天使用AI搭建了一个完整的博客系统
前端·后端