zoukankan      html  css  js  c++  java
  • 三层代码的实现

      UI层:

      private void Button1_Click(object sender, EventArgs e)

      {

      string userName = txtuserName.Text.Trim();

      string password = txtpassword.Text;

      LoginBLL.LoginManaer mgr = new LoginBLL.LoginManaer();//实例化这个业务层类

      LoginModel.UserInfo user = mgr.UserLogin(userName, password);//将信息给model层

      MessageBox.Show("登录用户:" + user.UserName);//返回UI层

      }

      BLL层:

      public LoginModel.UserInfo UserLogin(string userName,string password)//获取用户传来的信息。

      {

      //需要和数据源打交道,实例化DAL层

      LoginDAL.UserDAO uDao = new LoginDAL.UserDAO();

      LoginModel.UserInfo user = uDao.SelectUser(userName, password);

      if (user !=null)//登录成功时

      {

      LoginDAL.ScoreDAO sDao = new LoginDAL.ScoreDAO();//增加积分。

      sDao.UpdateScore(userName, 10);

      return user;

      }

      else

      {

      throw new Exception("登录失败");//没有登录成功跳到这里

      }

      }

      }

      DAL层User层:

      public LoginModel.UserInfo SelectUser(string userName,string password )

      {

      //using 打开了数据库连接,从数据库中读取数据。

      using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))//此行代码是登录SQL Server用的。

      {

      //sqlcommand 表示可以对SQL Server数据库进行的操作。

      SqlCommand cmd = conn.CreateCommand();

      //获取数据表名

      cmd.CommandText = @"SELECT ID,UserName,Password,Email FROM USERS WHERE UserName=@UserName AND Password=@Password";

      //而CommandType是一个枚举类型。有三个值:text、StoredProcedure、TableDirect用于表示SqlCommand对象CommandType的执行形式。

      cmd.CommandType = CommandType.Text;//不写也可以的,因为Text是默认的

      //声明两个参数. Parameters是范围的意思。

      cmd.Parameters.Add(new SqlParameter("@UserName", userName));

      cmd.Parameters.Add(new SqlParameter("@Password", password));

      //登录数据库

      conn.Open();

      //要想使用SqlDateReader ,就必须引用上面的client命名空间。 并且如果想创建SqlDateReader,必须使用ExecuteReader方法。

      SqlDataReader reader = cmd.ExecuteReader();//对数据库进行查询得到结果,并且返回对象。

      LoginModel.UserInfo user = null;//先构造LoginModel,首先默认值为NULL

      while (reader.Read())//开始读取数据,如果用户名和密码不正确,无法读取数据,直接返回user为null。

      {

      if (user==null)//如果是null的话,再进行构造。

      {

      user = new LoginModel.UserInfo();

      }

      user.ID = reader.GetInt32(0);

      user.UserName = reader.GetString(1);

      user.Password = reader.GetString(2);

      if (!reader.IsDBNull(3))

      {

      user.Email = reader.GetString(3);

      }

      }

      return user;

      }

      }

      Score层:

      public void UpdateScore(string userName,int value)//加分

      { 无锡妇科医院哪家好 http://mobile.xasgyy.net/

      //throw new NotFiniteNumberException();

      using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))

      {

      SqlCommand cmd = conn.CreateCommand();

      cmd.CommandText = @"INSERT INTO Score(UserName,Score) Values(@UserName,@Score)";

      cmd.Parameters.Add(new SqlParameter("@UserName", userName));

      cmd.Parameters.Add(new SqlParameter("@Score", value));

      conn.Open();

      cmd.ExecuteNonQuery();//必须引用using System.Data.SqlClient;此代码用来更新数据库。

      }

      }

      登录层:

      class DbUtil//工具类

      {

      //登录SQL Server代码

      public static string ConnString = @"Server=(local); Database=Login; User=sa; Password=12345";

      }

      }

      Model层:

      public class UserInfo

      {

      public int ID { get; set; }

      public string UserName { get; set; }

      public string Password { get; set; }

      public string Email { get; set; }

      }

  • 相关阅读:
    ADO连接access和oracle的一个区别
    我的大救星——Oracle APEX 快速Web开发(鼠标点点即可开发出专业级Web应用)
    Sql Server 2008 R2 error:40 错误处理
    我的第一个WPF程序
    开源社会网络分析工具NodeXL介绍
    JavaScript学习笔记1之基础知识点
    JavaScript学习笔记6 之经典神坑题整理
    JavaScript学习笔记2之Tab切换
    变量声明和函数声明会提升到当前作用域顶部
    JavaScript学习笔记5 之 计时器 & scroll、offset、client系列属性 & 图片无缝滚动
  • 原文地址:https://www.cnblogs.com/djw12333/p/11114499.html
Copyright © 2011-2022 走看看