学习笔记。
摘自《一都编程》
https://baijiahao.baidu.com/s?id=1657402566840735471&wfr=spider&for=pc
一、概述
开发程序可以使用多种方法实现,但是程序开发的好坏,则要使用一种规范来约束,三层架构就是一种开发规范。
这里使用.NET Web应用程序+C#+SQL Server搭建的经典.NET三层架构来实现用户注册功能。
主要是通过用户注册功能来训练如何使用经典.NET三层架构完成Web应用程序的开发。
二、创建数据库表结构
打开SQL Server的SSMS管理工具,添加一个名称为MyTest的数据库,并在此数据库中添加一个名称为UserInfo的表结构,如下图所示:
表名为UserInfo,Id为主键,自增1。
三、创建项目
1、创建新项目
选择ASP.NET Web应用程序(.NET Framework)
2、配置新项目
输入项目名称My_LoginWeb;选择框架;
3、创建新的ASP.NET Web应用程序
选择空;点击“创建”按钮。出现以下资源管理器界面
4、解决方案的信息
四、编写实体类Model
1、新建项目Model类库
在解决方案上右击添加 ,选“新建项目”。选择类库(.NET Framework)。名称取名“Model”
2、建立UserInfo类
把class1.cs改名为UserInfo.cs,如下图。
3、封装实体类
现在根据UserInfo表中的字段来封装实体类,C#代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
///
/// 用户信息实体
///
public class UserInfo
{
///
/// 主键,学生编号
///
public int Id { get; set; }
///
/// 用户名
///
public string UserName { get; set; }
///
/// 密码
///
public string Pwd { get; set; }
///
/// 创建时间
///
public DateTime CreateTime { get; set; }
}
}
这样就建立了实体类与数据库表之间的映射关系。
五、建立用户界面
1、新建Web窗体Register.aspx
用户注册界面是供用户使用的,需要在UI层创建。在My_LoginWeb右击新建项;创建一个名称为“Register.aspx”的Web窗体,如下图所示:
2、添加布局页面
在Register.aspx上右击“查看设计器”,布局页面,如下图:
3、添加代码
编写“注册”按钮的事件C#代码,如下:
///
/// 注册
///
///
///
protected void btnRegister_Click(object sender, EventArgs e)
{
//接收值
string userName = txtUserName.Text;
string pwd = txtPwd.Text;
if (userName != "" && pwd != "")
{
//实例化Model对象
Model.UserInfo u = new Model.UserInfo();
u.UserName = userName;
u.Pwd = pwd;
u.CreateTime = DateTime.Now;
//添加到数据库操作,但在三层中,UI层只能调用BLL层,所以还要在BLL层中编写代码
//调用BLL层中的方法
}
}
六、编写DAL层代码
1、引用DBHelper类库
将已经封装的DBHelper帮助类库放在三层架构中的DAL项目中。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Data.SqlClient;
using System.Data;
namespace DAL
{
public class DBHelper
{
//创建连接对象
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=MyTest;Integrated Security=True");
///
/// 执行sql语句返回受影响的行数
///
///
///
public int ExcuteNonquery(string sql)
{
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
int count = command.ExecuteNonQuery();
conn.Close();
return count;
}
///
/// 返回首行首列数据
///
///
///
public object ExcuteScalar(string sql)
{
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
object d = command.ExecuteScalar();
conn.Close();
return d;
}
///
/// 返回SqlDataReader对象
///
///
///
public SqlDataReader DataReader(string sql)
{
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
SqlDataReader sdr = command.ExecuteReader(CommandBehavior.CloseConnection);
return sdr;
}
///
/// 返回DataTable对象
///
///
///
public DataTable DataTable(string sql)
{
//创建适配器对象
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
//创建数据集
DataSet ds = new DataSet();
//填充数据集
adapter.Fill(ds);
//返回datatable
return ds.Tables[0];
}
}
}
2、创建DB类
首先需要在DAL项目中添加一个所有与UserInfo表相关操作的C#类,在该类中封装操作数据库的方法,如:添加数据、修改数据、删除数据、查询数据等。
在DAL中添加一个UserInfoDB类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Model;
namespace DAL
{
///
/// UserInfo数据库表相关操作
///
public class UserInfoDB
{
//实例化DBHelper类
DBHelper db = new DBHelper();
///
/// 注册用户
///
///
///
public int UserRegister(Model.UserInfo userInfo)
{
//SQL语句
string sql = string.Format("insert into UserInfo(UserName,Pwd,CreateTime) values('{0}','{1}','{2}')", userInfo.UserName, userInfo.Pwd, userInfo.CreateTime);
int rows = -1;
try//加入异常处理
{
//开始执行向数据库插入数据操作
rows = db.ExcuteNonquery(sql);
}
catch (Exception ex)
{
rows = -2;
}
return rows;
}
}
}
在UserRegister()方法中,所传递的参数就是Model项目中的UserInfo实体对象。其中会带有一些值过来。这些值是从BLL层传过来的。
七、编写BLL层代码
在BLL项目中添加一个名称为“UserInfoBLL”的类。然后添加对DAL和Model的引用。
我们知道BLL主要处理一些业务逻辑,如果没有业务逻辑代码,直接调用DAL中相应的数据库操作即可,如下BLL层代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DAL;
using Model;
namespace BLL
{
///
/// 用户业务逻辑层
///
public class UserInfoBLL
{
//实例化DAL类
DAL.UserInfoDB userDB = new UserInfoDB();
///
/// 注册用户
///
///
///
public int UserRegister(Model.UserInfo userInfo)
{
//在这里可以编写一些复杂的业务逻辑
//将密码转换为小写
string pwd = userInfo.Pwd.ToLower();
//重新赋值,覆盖原来的值
userInfo.Pwd = pwd;
//调用DAL层的数据库访问代码
int rows = userDB.UserRegister(userInfo);
return rows;
}
}
}
八、UI层调用BLL层
再返回到注册页面aspx.cs文件中,补足调用BLL中的用户注册代码了:
//调用BLL层中的方法
///
/// 注册
///
///
///
BLL.UserInfoBLL uBLL = new BLL.UserInfoBLL();
int rows = uBLL.UserRegister(u);
if (rows >= 1)
{
Response.Write("");
}
九、运行结果
现在输入一个用户名和密码
点击注册,成功!