【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等功能,后文再介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/63012.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring 容器原始 Bean 是如何创建的?

以下内容基于 Spring6.0.4。 这个话题其实非常庞大,我本来想从 getBean 方法讲起,但一想这样讲完估计很多小伙伴就懵了,所以我们还是一步一步来,今天我主要是想和小伙伴们讲讲 Spring 容器创建 Bean 最最核心的 createBeanInstan…

浅谈智能低压电动机保护控制器的研发及其应用

安科瑞 华楠 摘 要:低压电动机保护控制器是整套工业生产自动化电动机拖动系统中的重要的核心器件,可以实现工业自动化生产过程中电动机远程系统监控与控制的智能化管理,帮助用户及 时了解电动机的运行状况,为电动机设备状态分析…

宝塔Linux面板点击SSL闪退打不开?怎么解决?

宝塔Linux面板点击SSL证书闪退如何解决?旧版本的宝塔Linux面板确实存在这种情况,如何解决?升级你的宝塔Linux面板即可。新手站长分享宝塔面板SSL闪退的解决方法: 宝塔面板点击SSL证书闪退解决方法 问题:宝塔Linux面板…

【数学建模学习(9):模拟退火算法】

模拟退火算法(Simulated Annealing, SA)的思想借 鉴于固体的退火原理,当固体的温度很高的时候,内能比 较大,固体的内部粒子处于快速无序运动,当温度慢慢降 低的过程中,固体的内能减小,粒子的慢慢趋于有序&a…

springBean生命周期解析

本文基于Spring5.3.7 参考: kykangyuky Spring中bean的生命周期 阿斌Java之路 SpringBean的生命周期, 杨开振 JavaEE互联网轻量级框架整合开发 黑马程序员 JavaEE企业级应用开发教程 马士兵 Spring源码讲解 一. SpringBean生命周期流程图 二. 示例代码 …

第 357 场力扣周赛题解

A 故障键盘 简单模拟 class Solution { public:string finalString(string s) {string res;for (auto c: s)if (c ! i)res.push_back(c);elsereverse(res.begin(), res.end());return res;} };B 判断是否能拆分数组 区间dp:定义 p i , j p_{i,j} pi,j​表示子数组 n…

R语言3_安装SeurateData

环境Ubuntu22/20, R4.1 在命令行中键入, apt-get update apt install libcurl4-openssl-dev libssl-dev libxml2-dev libcairo2-dev libgtk-3-dev # libcairo2-dev :: systemfonts # libgtk :: textshaping进入r语言交互环境,键入, instal…

基于二进制草蝉优化算法选择特征并使用 KNN 进行训练(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 基于二进制草蝉优化算法选择特征并使用KNN(K-Nearest Neighbors,K最近邻算法)进行训练是一种…

安全基础 --- https详解 + 数组(js)

CIA三属性:完整性(Confidentiality)、保密性(Integrity)、可用性(Availability),也称信息安全三要素。 https 核心技术:用非对称加密传输对称加密的密钥,然后…

分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离 (三)

本篇主要说明: 1. 因为这个mysql版本是8.0,所以当其中一台mysql节点挂掉之后,主从同步,甚至双向数据同步都失效了,所以本篇主要记录下当其中的节点挂掉之后如何再次生效。另外推荐大家使用mysql5.7的版本,这…

ORA-12154:TNS:could not resolve the connect identifier specified

避免中文乱码 NLS_LANG: AMERICAN_AMERICA.UTF8 tnsnames.ora 所在目录 TNS_ADMIN: F:\Program\instantclient_11_2\NETWORK\ADMIN

MacBook触控板窗口管理 Swish for Mac

Swish for Mac是一款用于通过手势来控制mac应用窗口的软件,你可以通过这款软件在触控板上进行手势控制,你可以在使用前预设好不同手势的功能,然后就能直接通过这些手势让窗口按照你想要的方式进行变动了 Swish 支持 Haptick Feedback 震动反…

postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用

前言: MySQL数据库和postgresql数据库之间的差异并不多,这里的差异指的是对SQL语言的支持两者并不大,但底层的东西差异是非常多的,例如,MySQL的innodb引擎概念,数据库用户管理,这些和postgresq…

ruby调试

如果下载 ruby-debug-ide gem install ruby-debug-ide vscode 下载 ruby扩展 1, ruby 2,修改launch.json

windows .gitignore 加入文件名后 依然可以从git status中看到文件问题

最近在学git,对着b站的视频操作,结果很简单的添加.gitignore文件操作,up主的正常隐藏,我的却一直出问题。 百思不得其解,网上各种啥啥啥清缓存都没讲到点上。 最后发现是.gitignore文件有问题,windows默认…

LNMP及论坛搭建

安装 Nginx 服务 systemctl stop firewalld systemctl disable firewalld setenforce 0 1.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。 yum -y install pcre-devel zlib-devel…

Linux【网络编程】之深入理解TCP协议

Linux【网络编程】之深入理解TCP协议 TCP协议TCP协议段格式4位首部长度---TCP报头长度信息 TCP可靠性(确认应答)&& 提高传输效率确认应答(ACK)机制32位序号与32为确认序号 16位窗口大小---自己接收缓冲区剩余空间的大小16位紧急指针---紧急数据处…

Vue电商项目--订单和支付

提交订单 没有组件,先搬组件 配置路由 然后静态pay页面就有了 这里提交订单不是简单的直接进行路由的跳转,而且要拿你支付的数据向服务器发请求 提交订单 请求地址 /api/order/auth/submitOrder?tradeNo{tradeNo} 请求方式 POST 参数类型 参数名…

边写代码边学习之LSTM

1. 什么是LSTM 长短期记忆网络 LSTM(long short-term memory)是 RNN 的一种变体,其核心概念在于细胞状态以及“门”结构。细胞状态相当于信息传输的路径,让信息能在序列连中传递下去。你可以将其看作网络的“记忆”。理论上讲&a…

Stable Diffusion - Candy Land (糖果世界) LoRA 提示词配置与效果展示

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132145248 糖果世界 (Candy Land) 是一个充满甜蜜和奇幻的地方,由各种各样的糖果和巧克力构成。在糖果世界,可以看到&…