(三层架构入门)最基本的三层架构搭建方法(详细过程及所有代码)

原创 2015年07月10日 15:13:51

一、打开 Microsoft Visual Studio 2010软件

二、新建一个C#空网站

三、选中项目名(jinlanyan),右键----》添加新项(index.aspx)

四、添加App_Code文件夹,右键项目名(jinlanyan)---》添加asp.net文件夹---》App_Code


五、在App_Code中添加三个普通的文件夹,右键App_Code,选择新建文件夹

六、右键BLL,选择添加新项,依次添加三个类(SubjectBLL.cs、SubjectDAL.cs和SubjectModel.cs),其中SqlHelper.cs为数据库访问类,代码后面给出。



附逻辑说明:index页面调用bll,bll再调用dal,再按顺序返回结果。

七、数据表见下图



八、运行截图


九、各页面代码

index.aspx页面代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table style="margin: auto;background-color:#33ccff">
            <tr>
                <td>
                    按新闻 newsId 查询:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                </td>
                <td>
                    <asp:Button ID="Button1" runat="server" Text="查询" onclick="Button1_Click" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <asp:GridView ID="GridView1" runat="server" Style="margin: auto" OnRowDeleting="Subject_RowDeleting1"
                        OnRowEditing="Subject_RowEditing" OnRowUpdating="Subject_RowUpdating" 
                        onrowcancelingedit="GridView1_RowCancelingEdit">
                        <Columns>
                            <asp:CommandField ShowDeleteButton="True" />
                            <asp:CommandField ShowEditButton="True" />
                        </Columns>
                    </asp:GridView>
                </td>
            </tr>
            
            <tr>
                <td align="right">
                   NewsId:
                </td>
                <td>
                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td align="right">
                    FileTitle:
                </td>
                <td>
                    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td align="right">
                    FilePath:
                </td>
                <td>
                    <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <asp:Button ID="Button2" runat="server" Text="插入" onclick="Button2_Click" />
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

index.aspx.cs页面代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;


public partial class index : System.Web.UI.Page
{
    SubjectBLL sb = new SubjectBLL();
    SubjectModel sm = new SubjectModel();
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void Button1_Click(object sender, EventArgs e)//查询
    {
        sm.NewsId1 = Convert.ToInt32(TextBox1.Text); //查询框里输入的Text
        DataSet ds = sb.select(sm);
        GridView1.DataSource = ds;
        GridView1.DataBind();
    }
    protected void Button2_Click(object sender, EventArgs e)//插入
    {
        //s.Id1 = Convert.ToInt32(TextBox5.Text);//Id的值是自增的。
        sm.NewsId1 = Convert.ToInt32(TextBox2.Text);
        sm.FileTitle1 =TextBox3.Text;
        sm.FilePath1 = TextBox4.Text;
        if (sb.insert(sm) == 1)
        {


            Button2.Text = "添加成功!";
        }
        else
            Button2.Text = "添加失败!";
    }
    protected void Subject_RowDeleting1(object sender, GridViewDeleteEventArgs e)//删除
    {
        sm.NewsId1 =  Convert.ToInt32(GridView1.Rows[e.RowIndex].Cells[2].Text);
        int i = sb.delete(sm);
        if (i == 1)
        {
            Button2.Text = "成功!";
        }
    }
    protected void Subject_RowUpdating(object sender, GridViewUpdateEventArgs e)//更新
    {
        sm.Id1 = Convert.ToInt32(((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text);
        sm.NewsId1 =  Convert.ToInt32(((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text);
        sm.FileTitle1 =((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text;
        sm.FilePath1 = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text;
        if (sb.update(sm) == 1)
        {
            GridView1.EditIndex = -1;
            Button1_Click(sender, e);
            Button2.Text = "成功!";
        }
    }
    protected void Subject_RowEditing(object sender, GridViewEditEventArgs e)//编辑
    {
        GridView1.EditIndex = e.NewEditIndex;
        Button1_Click(sender, e);//查询
    }


    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        Button1_Click(sender, e);//查询
    }
}


web.config代码

<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
<connectionStrings>
<add name="sqljw" connectionString="data source=172.17.81.246;database=UPMDB;uid=jiaowu;pwd=jiaowu" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
</configuration>

SqlHelper.cs代码

using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.SqlClient;


/// <summary>
///SqlHelper 的摘要说明
/// </summary>
public class SqlHelper
{
    public SqlHelper()
{


}
      
    public static DataSet ExecuteSelect(string sql)
    {
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["sqljw"].ConnectionString);
        SqlDataAdapter da = new SqlDataAdapter(sql, conn);
        DataSet ds = new DataSet();
        try
        {
            da.Fill(ds);
            return ds;
        }
        catch (Exception ex)//Exception ex
        {
            return null;
        }
    }


    /// <summary>
    /// insert delete update 
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    public static int ExecuteNonQuery(string sql)
    {
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Sqljw"].ConnectionString);
        SqlCommand comm = new SqlCommand(sql, conn);
        try
        {
            conn.Open();
            return comm.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            return -1;
        }
        finally
        {
            conn.Close();
        }
    }


    /// <summary>
    /// select ,返回第一行,第一列
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    public static object ExecuteScale(string sql)
    {
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Sqljw"].ConnectionString);
        SqlCommand comm = new SqlCommand(sql, conn);
        try
        {
            conn.Open();
            return comm.ExecuteScalar();
        }
        catch (Exception ex)
        {
            return null;
        }
        finally
        {
            conn.Close();
        }
    }
}

SubjectBLL.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;


/// <summary>
///SubjectBLL 的摘要说明
/// </summary>
public class SubjectBLL
{
public SubjectBLL()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
    public DataSet select(SubjectModel s)
    {
        SubjectDAL sd = new SubjectDAL();
        DataSet ds = sd.select(s);
        if (ds != null)
            return ds;
        else
            return null;
    }
    public int delete(SubjectModel s)
    {
        SubjectDAL sd = new SubjectDAL();
        int j = sd.delete(s);
        if (j == 1)
            return 1;
        else
            return -1;
    }
    public int insert(SubjectModel s)
    {
        SubjectDAL sd = new SubjectDAL();
        int j = sd.insert(s);
        if (j == 1)
            return 1;
        else
            return -1;
    }
    public int update(SubjectModel s)
    {
        SubjectDAL sd = new SubjectDAL();
        int j = sd.update(s);
        if (j == 1)
            return 1;
        else
            return -1;
    }
}

SubjectDAL.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;


/// <summary>
///SubjectDAL 的摘要说明
/// </summary>
public class SubjectDAL
{
public SubjectDAL()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
    public DataSet select(SubjectModel d)
    {
        string sql = "select * from NewsUploadFile where NewsId='{0}'";
        sql = string.Format(sql, d.NewsId1);
        return SqlHelper.ExecuteSelect(sql);
    }
    public int delete(SubjectModel d)
    {  
        string sql = "delete  NewsUploadFile where  Id={0} ";
        sql = string.Format(sql, d.NewsId1);
        return SqlHelper.ExecuteNonQuery(sql);
    }
    public int insert(SubjectModel d)
    {
        string sql = "insert into  NewsUploadFile (NewsId,FileTitle,FilePath) values ('{0}','{1}','{2}') ";
        sql = string.Format(sql,d.NewsId1, d.FileTitle1, d.FilePath1);
        return SqlHelper.ExecuteNonQuery(sql);
    }
    public int update(SubjectModel d)
    {
        string sql = "update NewsUploadFile set NewsId='{0}',FileTitle='{1}',FilePath='{2}' where Id='{3}'";
        sql = string.Format(sql, d.NewsId1, d.FileTitle1, d.FilePath1,d.Id1);
        return SqlHelper.ExecuteNonQuery(sql);
    }
}

SubjectModel.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
///SubjectModel 的摘要说明
/// </summary>
public class SubjectModel
{
public SubjectModel()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
    private int Id;//字段
    public int Id1 //属性、方法
    {
        get { return Id; }
        set { Id = value; }
    }
    private int NewsId;
    public int NewsId1
    {
        get { return NewsId; }
        set { NewsId = value; }
    }
    private string FileTitle;
    public string FileTitle1
    {
        get { return FileTitle; }
        set { FileTitle = value; }
    }
    private string FilePath;
    public string FilePath1
    {
        get { return FilePath; }
        set { FilePath = value; }
    }
}






对于三层架构的认识整理

三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control)。而web开发中的三层架构是指:数据访问层(DAL-Datab...

C# 自动生成三层架构中的Model层.cs类方法

由于开发ERP项目,有时候需要很多表,且表的字段比较多,写Model非常耗时,所以自己网上抄了一些资料,勉强写了一个自动生成代码的工具,现在分享主要技术点给大家参考,欢迎指正: 1、连接数据库 2...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

三层架构之基础知识

一、概念 1、UI(表现层):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。用于接收用户输入的数据和显示处理后用户需要的数据。   2、BLL:(业务逻辑层):UI层和DAL层之...

ASP.net搭建三层架构网站

1、新建项目 2、创建Visual Studio解决方案 3、再创建项目 4、选择类库类型 5、依次创建bl...

三层架构(我的理解及详细分析)

三层架构已经学了一段时间,一直想做一个比较完整、比较完美的总结。但是左思右想,不知道如何下笔。都说万事开头难嘛,今天整理了一下凌乱的思路,哎,还是没整理好,想到哪就说到哪吧。   初学者很不理解: 1...

C#搭建三层架构

C#搭建三层 三层架构分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)再加上实体类库(Model) 三层详解: 1、实体类库(Model),主要存放数据库中的表字段。 2、数据访...

从零开始写一个框架的详细步骤

定位 所谓定位就是回答几个问题,我出于什么目的要写一个框架,我的这个框架是干什么的,有什么特性适用于什么场景,我的这个框架的用户对象是谁,他们会怎么使用,框架由谁维护将来怎么发展等等。 如果你...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(三层架构入门)最基本的三层架构搭建方法(详细过程及所有代码)
举报原因:
原因补充:

(最多只允许输入30个字)