啰嗦:今天面试,遇到这个上级测试,很容易的,因为一个错误,居然最后没做出来,心累

回到家,1小时做完,我特么还加了密,我还验证,可是上天不给我一次重来的机会啊

很垃圾的,小白可以看看,大神可以轻喷

首先第一个问题就是:数据库字段的设计

nvarchar  与 varchar的区别
nvarhar:添加字段,自动用空格补齐后面的空余
varvhar:无空格
问题出现的原因:登陆判断时,输入文本框的值和数据库一样却报错,发现原来是有空格
 
最简单的数据库表设计
 
然后就是添加sql帮助类库
 
model代码:model有输入验证记得在model类库引用 using System.ComponentModel.DataAnnotations;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Model
{
    public class UserModel
    {
        [DisplayName("用户名")]
        [Required(ErrorMessage = "必填")]
        public string UserName { get; set; }

        [DisplayName("密码")]
        [Required(ErrorMessage = "必填")]
        [StringLength(, MinimumLength = , ErrorMessage = "密码长度必须在{2} 和{1}个字符")]
        [DataType(DataType.Password)]
        public string UserPwd { get;set; }

        public string ConfirmPassword { get; set; }
        public string Message { get; set; }
    }
}

model代码

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YL.MySQL;

namespace DAL
{
    public class UserDAL
    {

        //注册
        public bool regst(string UserName, string UserPwd)
        {
            StringBuilder sql =new StringBuilder();
            sql.Append("INSERT INTO Users (UserName,UserPwd) VALUES (@UserName,@UserPwd)" );
            SqlParameter[] sqlparmeter =
            {
                ),
                )

                                         };
            sqlparmeter[].Value = UserName;
            sqlparmeter[].Value = UserPwd;
            ;
            return result;           

        }
        //登陆
        public Model.UserModel GetLogin(string UserName)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select UserName,UserPwd " );
            strSql.Append("  from Users ");
            strSql.Append(" where UserName=@UserName ");
            SqlParameter[] parameters = {
                    )
            };
            parameters[].Value = UserName;
            var data = new MySqlAdoProvide().ExecuteReader(dr => dr.GetEntity<Model.UserModel>(), MySqlHelper.connectionStringManager, strSql.ToString(), parameters).FirstOrDefault();
            return data;
        }
    }
}

DAL代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BLL
{
    public class UserBLL
    {
        //构造函数
        private DAL.UserDAL dal;
        public UserBLL()
        {
            dal = new DAL.UserDAL();
        }
        //注册
        public bool regst(string UserName, string UserPwd)
        {
            return dal.regst(UserName, UserPwd);
        }
        public Model.UserModel GetLogin(string UserName)
        {
            return dal.GetLogin(UserName);
        }
    }
}

BLL代码

MvcApplication8-HomeController代码
控制器代码
@model Model.UserModel
@{
    ViewBag.Title = "Index";
}

<h2>登陆界面</h2>
<div>
    @using(Html.BeginForm("Login","Home",FormMethod.Post))
    {
        <div>
                 @Html.TextBoxFor(m => m.UserName, new { @class = "form-control", @placeholder = "用户名" })
                    @Html.ValidationMessageFor(m => m.UserName)
              @Html.TextBoxFor(m => m.UserPwd, new { @class = "form-control", @placeholder = "密码" })
                    @Html.ValidationMessageFor(m => m.UserPwd)
            <button type="submit">登陆</button>
               @Html.ValidationMessageFor(m => m.Message)
         <a href="@Url.Action("regist")">注册一个新账号</a>
            </div>
        }
</div>

登陆界面代码

@model Model.UserModel
@{
    ViewBag.Title = "Index";
}

<h2>注册界面</h2>
<div>
    @using(Html.BeginForm("zc","Home",FormMethod.Post))
    {
        <div>
  @Html.TextBoxFor(m => m.UserName, new {  @placeholder = "用户名" })
                    @Html.ValidationMessageFor(m => m.UserName)

              @Html.TextBoxFor(m => m.UserPwd, new { @placeholder = "密码" })
                    @Html.ValidationMessageFor(m => m.UserPwd)
            @Html.TextBoxFor(m => m.ConfirmPassword, new { @placeholder="确认密码"})
            @Html.ValidationMessageFor(m=>m.ConfirmPassword)
               @Html.ValidationMessageFor(m => m.Message)
            <button type="submit">注册</button>

            </div>
        }
</div>

注册界面代码

 
 

登陆+注册(三层+sql语句)的更多相关文章

  1. PLSQL执行sql语句输出的中文是???之解决方法和步骤

    方法/步骤 1 登陆plsql,执行sql语句,输出的中文标题显示成问号????:条件包含中文,则无数据输出 步骤阅读 2 输入sql语句select * from V$NLS_PARAMETERS查 ...

  2. 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)

    浅谈c#的三个高级参数ref out 和Params   c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和 ...

  3. Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证

    Python tkinter 实现简单登陆注册 最终效果 开始界面 ​ 注册 登陆 ​ 源码 login.py # encoding=utf-8 from tkinter import * from ...

  4. sql语句去重 最后部分没看 看1 有用

    一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链接查询和优化问题,手写SQL语句,例如四个球队比赛,用SQL显示所有比赛组合:举例2:选择重复项,然后去掉重复项:) 数据库里 ...

  5. Spring Boot+Jpa(MYSQL)做一个登陆注册系统(前后端数据库一站式编程)

    Spring Boot最好的学习方法就是实战训练,今天我们用很短的时间启动我们第一个Spring Boot应用,并且连接我们的MySQL数据库. 我将假设读者为几乎零基础,在实战讲解中会渗透Sprin ...

  6. Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)

    写在最前: 在实际开发中,相信每个项目都会有用户登陆注册功能,这个实现的方法很多,下面是我实现的方法,供大家交流. 新人发帖,万分紧张,怎么样才能装作一副经常发帖的样子不被别人看出来呢-,- ? 好了 ...

  7. SQL语句大全

    经典SQL语句大全(绝对的经典) 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份s ...

  8. 实用SQL语句大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  9. 经典SQL语句大全

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

随机推荐

  1. 调试新技能get - powershell

    1. win+r -> powershell_ise 2. debug-process 3. type processname....WITHOUT ".exe"

  2. PHP http 简单用户验证

    <?php $valid_passwords = array ("user" => "password"); $valid_users = arra ...

  3. [综]聚类Clustering

    Annie19921223的博客 [转载]用MATLAB做聚类分析 http://blog.sina.com.cn/s/blog_9f8cf10d0101f60p.html Free Mind 漫谈 ...

  4. WIN SERVER 2008 R2 VPN

    http://blog.csdn.net/popelovevivi/article/details/9408851 -- 还差最重要一步. 在“本地用户和组”-“用户”-右键一个你想VPN登录的用户名 ...

  5. 解决HttpWebRequest首次连接特别慢的问题

    针对这个问题,网上各种搜,然后看到的解决方案大致相同,改web.config,问题来了,按网上说的,没感觉快了多少 <?xml version="1.0"?> < ...

  6. FreeRTOS知识点

    特点: FreeRTOS任务不容许以任何方式从  任务中 实现函数中返回--绝对不能有return语句,也不能执行到函数末尾.如果任务不再需要,可以显示的删除. 一个任务函数可以用来创建若干个任何-- ...

  7. Linux 目录配置

    一.Linux 目录配置标准:FHS FHS(Filessystem Hierarchy Standard) 的重点在于规范每个特定的目录下应该要放置什么样子的数据. FHS依据文件系统使用的频繁与否 ...

  8. ubuntu14.04 python自带版本升级

    ubuntu14.04 python自带版本升级 sudo add-apt-repository ppa:fkrull/deadsnakes-python2. sudo apt-get update ...

  9. C#程序实现动态调用DLL的研究(转)

    摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...

  10. 百度地图API功能集锦

    1.点个数太多导致加载缓慢的解决. 2.可视化区域内加载的解决. 3.自定义信息窗口解决. 4.区域/板块/商圈等的绘制功能解决. 基本包含了用到百度地图API会使用到的大部分常规性场景.(聚合点功能 ...