标签:数据库访问 登录 config 否则 加密 hash 三层架构 pac list
首先介绍一下MVC的意义,和各个层面之间的用途和功能。
1)实体层。主要用来声明在视图层和业务逻辑层之间传递数据的载体。通常代表来源与项目数据库中一个或者多个表组成的一条有意义的记录。
2)业务逻辑层。根据业务逻辑向视图层提供数据,这个项目中的类有权根据业务逻辑来决定是否调用数据库访问层的方法
3)数据库访问层。项业务逻辑层提供访问数据的方法。
4)视图层。主要是以网站开发为例。用于提供显示,添加,编辑和删除数据。
我在VS中创建的项目的结构图:
NetMVC就是所谓的视图层。Entity是实体层,用来声明开发过程中被要使用的所有变量。DAL是数据库访问层,主要完成所有操作对数据库的访问。BLL是业务逻辑层,处理视图层传来的业务逻辑,然后传递给数据库访问层进行处理。
本例主要演示的是登陆页面的实现,Entity层的代码如下:
- using System;
- using System.Collections.Generic;
- using System.Text;
-
- namespace Entity
- {
- public class UserInfo
- {
- private int UserId;
-
-
-
-
- public int UserId1
- {
- get { return UserId; }
- set { UserId = value; }
- }
- private string username;
-
-
-
-
- public string Username
- {
- get { return username; }
- set { username = value; }
- }
-
- private string password;
-
-
-
-
- public string Password
- {
- get { return password; }
- set { password = value; }
- }
- private int loginCount;
-
-
-
-
- public int LoginCount
- {
- get { return loginCount; }
- set { loginCount = value; }
- }
- private DateTime regDate;
-
-
-
-
- public DateTime RegDate
- {
- get { return regDate; }
- set { regDate = value; }
- }
- private DateTime lastLoginDate;
-
-
-
-
- public DateTime LastLoginDate
- {
- get { return lastLoginDate; }
- set { lastLoginDate = value; }
- }
- private bool isForbidden;
- private string passwordQuestion;
-
-
-
-
- public string PasswordQuestion
- {
- get { return passwordQuestion; }
- set { passwordQuestion = value; }
- }
- private string passwordAnswer;
-
-
-
-
- public string PasswordAnswer
- {
- get { return passwordAnswer; }
- set { passwordAnswer = value; }
- }
-
-
- }
- }
完成对实体类的创建,接着就要完成对数据库访问层的创建(其中需要用到上篇问章所写的SqlHelper数据库访问通用类http://blog.csdn.net/yisuowushinian/article/details/7999305),代码如下,
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Data;
- using System.Data.SqlClient;
- using System.Configuration;
- using Entity;
-
- namespace DAL
- {
- public class UserDal
- {
- private string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
-
-
-
-
-
-
- public bool AddUser(UserInfo info)
- {
- string sql = "insert into Users(Username,password) values(‘@Username‘,‘@password‘)";
- SqlParameter[] parameters = new SqlParameter[4];
- parameters[0] = new SqlParameter("@Username", SqlDbType.NVarChar, 30);
- parameters[0].Value = info.Username;
-
- parameters[1] = new SqlParameter("password", SqlDbType.VarChar, 50);
- parameters[1].Value = info.Password;
-
-
- return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
- }
-
-
-
-
-
-
- public bool DeleteUser(int UserId)
- {
- string sql = "delete from users where UserId=" + UserId;
- return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
- }
-
-
-
-
-
-
- public bool UpDateUser(UserInfo info)
- {
- string sql = "update users set password=@password,loginCount=@loginCount where userid=@userid";
- SqlParameter[] parameters = new SqlParameter[7];
- parameters[0] = new SqlParameter("@password", SqlDbType.VarChar, 30);
- parameters[0].Value = info.Password;
-
- parameters[1] = new SqlParameter("@loginCount", SqlDbType.Int, 4);
- parameters[1].Value = info.LoginCount;
-
- return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
- }
-
-
-
-
-
-
- public DataTable GetUser(int userId)
- {
- string sql = "select * from users where userId=@UserId";
- SqlParameter[] parameters = new SqlParameter[1];
- parameters[0] = new SqlParameter("@UserId", SqlDbType.Int, 4);
- parameters[0].Value = userId;
- return new SqlDbHelper(connectionString).ExecuteDataTable(sql, CommandType.Text, parameters);
- }
-
-
-
-
-
-
- public DataTable GetUser(string Username)
- {
- string sql = "select * from users where username=@username";
- SqlParameter[] parameters = new SqlParameter[1];
- parameters[1] = new SqlParameter("@username", SqlDbType.NVarChar, 30);
- parameters[1].Value = Username;
-
- return new SqlDbHelper(connectionString).ExecuteDataTable(sql, CommandType.Text, parameters);
- }
-
-
-
-
-
-
-
- public DataTable GetUserList(int startIndex, int size)
- {
- string sql = "select top " + size + " * from users where UserId not in (select top " + startIndex + " UserId from Users order by UserId asc)order by UserId asc";
- return new SqlDbHelper(connectionString).ExecuteDataTable(sql);
- }
-
-
-
-
-
- public int GetUserCount()
- {
- string sql = "select count(1) from Users";
- return int.Parse(new SqlDbHelper(connectionString).ExecuteScalar(sql).ToString());
- }
- }
- }
然后创建业务逻辑层,代码如下:
这个就完成了对数据库访问层,实体层,业务逻辑层的创建工作。因为在创建过程中被,有很多的重复的工作,我为了加快速度,就省略了一些的代码。
在登陆页面使用时,只需要引入业务逻辑层的方法,然后根据其中的方法,传入相应的参数,就可以完成所有的操作。
(MVC)三层架构知识的学习总结
标签:数据库访问 登录 config 否则 加密 hash 三层架构 pac list
原文地址:http://www.cnblogs.com/netalen/p/6106440.html