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

原创 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; }
    }
}






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#学习之web网站制作入门篇(ASP.NET)

之前熟悉C#与.net, 以为.net就是C#,现在知道了.NET是C#的开发平台,C#即可用来开发客户端(WindowsFrom),也可以用来开发网站即ASP.NET;

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

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

MyEclipse10 的正确破解方法

原文地址 网上有很多流传的破解方法,但是经过我尝试,失败了,这个方法不同,是成功的,当您看到这篇文章时,说明您找对了。 首先确定你的 JDK以及环境变量没有问题!  1、双击 run.bat打开破...

动软代码生成器2.41将批量生成的代码部署到已有项目详细教程(基于抽象工厂模式的三层架构)

前天在自己开发一个小项目的时候用了最新的动软代码生成器2.41, 原本打算直接用其批量代码生成功能生成一个大概的抽象工厂模式三层架构样例放入已有项目,调试通过后再进行进一步开发。 没想到在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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