首页 > 代码库 > 登陆+注册(三层+sql语句)

登陆+注册(三层+sql语句)

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

    回到家,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(20, MinimumLength = 6, 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 = 
            {
                new SqlParameter("@UserName",SqlDbType.NVarChar,50),
                new SqlParameter("@UserPwd",SqlDbType.NVarChar,50)
                                  
                                         };
            sqlparmeter[0].Value =http://www.mamicode.com/ UserName;
            sqlparmeter[1].Value =http://www.mamicode.com/ UserPwd;
            var result = new MySqlAdoProvide().ExecuteNonQuery(MySqlHelper.connectionStringManager, sql.ToString(), sqlparmeter) > 0;
            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 = {
                    new SqlParameter("@UserName", SqlDbType.NVarChar,50)
            };
            parameters[0].Value =http://www.mamicode.com/ UserName;
            var data = http://www.mamicode.com/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=http://www.mamicode.com/"@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语句)