一.说明
此文是小白在学习张晨光老师的视频教学<<Asp.Net WEB服务器编程技术>>中做的学习笔记,一些知识点也是跟着教程走的,大家也可以去老师的主页去学习,谢谢大家.
这一篇要练习的是,如下课程的代码:
二.三层
- UI层(UIL): 主要用于存放与用户交互的展示页面;(网页部分) –顾客
- 业务逻辑层(BLL): 主要用于存放针对具体问题对数据进行逻辑处理的代码(处理用户请求的类库) –服务员
- 数据访问层(DAL):主要用于存放对原始数据进行操作的代码,它封装了所有与数据库交互的操作,并为业务逻辑层提供数据服务.(存取数据, 供BLL调用的本质类库) –厨师
三.创建’顾客’
在我们的新建项目中,添加web项目:
并创建web窗体:WebForm1.asxp,并填入一下内容:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MVC_Test.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
菜名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
数量:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" />
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;//我们定义的'业务逻辑层'
namespace MVC_Test
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 按钮提交事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
//在按钮点击后,我们new 一个Waiter对象
Waiter wt = new Waiter();
//然后调用方法,传参
wt.inVeg(TextBox1.Text,Convert.ToInt32(TextBox2.Text));
}
}
}
四.创建’服务员’
创建类库:
右击 ‘解决方案’ > 添加 > 新建项目 > 选择 ‘类库(.NET Framework)’ > 下一步
然后在BLL中新建类,Waiter.cs,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DAL;//引用'厨师'
namespace BLL
{
/// <summary>
/// 服务员传递参数
/// </summary>
public class Waiter
{
//new 一个厨师
Cook ck = new Cook();
//点菜 结账
public void inVeg(string name , int num) {
ck.inVeg(name,num);
}
}
}
服务员准备就位,那么便要与客户交互,所以我们
在页面层项目 > 右击引用 > 添加引用
然后在WebForm1.asxp.cs里引用服务员
using BLL;
然后调用其方法(上面的WebForm1.asxp.cs中已经写入)
//在按钮点击后,我们new 一个Waiter对象
Waiter wt = new Waiter();
//然后调用方法,传参
wt.inVeg(TextBox1.Text,Convert.ToInt32(TextBox2.Text));
五.雇佣’厨师’
用相同的方法创建DAL类库,并创建Cook.cs,填入如下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ToolDBSQL;//这里引用数据库类
namespace DAL
{
public class Cook
{
//点菜 结账
public void inVeg(string name, int num)
{
//连接数据库,操作表
string sql = string.Format( @"insert into menu values('{0}',{1},'{2}')",name,num,DateTime.Now);
int a =MyDB.execuSql(sql);
}
}
}
厨师准备就位,那么便要与服务员交互,所以我们
然后在Waiter.cs里引用厨师
using DAL;//引用'厨师'
然后调用其方法(上面的Waiter.cs中已经写入)
//new 一个厨师
Cook ck = new Cook();
//点菜 结账
public void inVeg(string name , int num) {
ck.inVeg(name,num);
}
六.制作’食材’
用相同的方法创建ToolDBSQL类库,并创建MyDB.cs,填入如下代码:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using MySql.Data.MySqlClient;
namespace ToolDBSQL
{
public class MyDB
{
public static string DataBase = ConfigurationManager.ConnectionStrings["Conn_example"].ToString();
static MySqlConnection conn = new MySqlConnection(DataBase);
//增删改的方法
public static int execuSql(String sql)
{
conn.Open();//打开
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;//执行外部传入的sql语句
int result = -1;//返回值,默认为-1
//执行语句,并将返回值赋值
try
{
result = cmd.ExecuteNonQuery();
}
finally
{
//各种关闭
cmd.Dispose();
conn.Close();
}
//返回此项返回值
return result;
}
}
}
Web.config加入如下连接数据库代码:
<connectionStrings>
<add name="Conn_example" connectionString="Database='example';Data Source='127.0.0.1';User Id='root';Password='xxxxxx';charset='utf8';pooling=true"/>
</connectionStrings>
食材准备就位,那么便要与厨师交互,所以我们:
然后在Cook.cs里引用食材
using ToolDBSQL;//这里引用数据库类
然后调用其方法(上面的Cook.cs中已经写入)
//连接数据库,操作表
string sql = string.Format( @"insert into menu values('{0}',{1},'{2}')",name,num,DateTime.Now);
int a =MyDB.execuSql(sql);