老调重弹---C# winForm三层结构

大牛们略过,对初学者起抛砖引玉的作用。

以数据库AdventureWorks的Person.Address表为例。

一、建好框架

prj 表示层,这里用的是winForm.

prjBLL 业务逻辑层,当然是类库

PrjDAL 数据访问层,当然是类库啦

PrjModel 模型层,当然也是类库啦

二、展开

三、

以上结构中从下到上分析。

prjModel下的Address.cs 与要操作的表字段一一对应,我这里只列举几个字段。

Address.cs 

using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;

namespace PrjModel
{
public class Address
{

private int addressID;
private string addressLine1;

private string city;
private string postalCode;

public int AddressID { get; set; }
public string
AddressLine1 { get; set; }
public string City { get; set; }

public string PostalCode { get; set; }

}
}

SqlHelper.cs

using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;
using System.Data;
using
System.Data.SqlClient;

namespace PrjDAL
{
public static class SqlHelper
{

static string conStr = "server=.;database=AdventureWorks;user
id=sa;password=sa;";
private static SqlConnection con;

public static SqlConnection Con
{
get

{
if (con == null)
{

con = new SqlConnection(conStr);
con.Open();

}
if (con.State == ConnectionState.Closed)

{
con.Open();
}

if (con.State == ConnectionState.Broken)
{

con.Close();
con.Open();
}

return con;
}
}

public static SqlDataReader GetReader(string sql)
{

SqlCommand cmd = Con.CreateCommand();
cmd.CommandText =
sql;
SqlDataReader sdr = cmd.ExecuteReader();

return sdr;
}

}
}

AddressDAL.cs

using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;
using System.Data;
using
System.Data.SqlClient;
using PrjModel;

namespace PrjDAL
{
public class AddressDAL
{

public List<Address> GetAllAddress()
{
string
sql = "select AddressID,addressline1,city,postalCode from person.address";

SqlDataReader sdr = SqlHelper.GetReader(sql);

List<Address> addresses = new List<Address>();
while
(sdr.Read())
{
Address address = new
Address();
address.AddressID = sdr.GetInt32(0);

address.AddressLine1 = sdr.GetString(1);
address.City =
sdr.GetString(2);
address.PostalCode = sdr.GetString(3);

addresses.Add(address);
}

return addresses;
}
}
}

AddressBLL.cs

using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;
using System.Data;
using
System.Data.SqlClient;
using PrjModel;
using PrjDAL;

namespace PrjBLL
{
public class AddressBLL
{

List<Address> address = null;
public List<Address>
GetAllAddress()
{
AddressDAL addressDAL = new
AddressDAL();
address = addressDAL.GetAllAddress();

return address;
}
}
}

Form1.cs 很简单,里面只放了一个dataGridView1控件,界面如下:

后台代码如下:

using System;
using System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using
System.Linq;
using System.Text;
using System.Windows.Forms;
using
System.Data.SqlClient;
using PrjModel;
using PrjBLL;
namespace
Prj
{
public partial class Form1 : Form
{
public
Form1()
{
InitializeComponent();
}

AddressBLL addressBll = new AddressBLL();
private void
Form1_Load(object sender, EventArgs e)
{

dataGridView1.DataSource = addressBll.GetAllAddress();
}

}
}

运行效果:

老调重弹---C# winForm三层结构,布布扣,bubuko.com

时间: 2024-10-29 21:24:19

老调重弹---C# winForm三层结构的相关文章

工厂三层结构环境的搭建

工厂三层结构 n年没登陆的账号,居然还在.怎么上传项目文件呢/? 一.创建项目 1.创建Model,实现业务实体. 2.创建IDAL,实现接口. 3.创建SQLServerDAL,实现接口里的方法. 4.创建DBUtility,放DBHelpersql.cs. System.configuration 5.创建DALFactory,返回程序集的指定类的实例.放发的素材dataaccess.cs和datacache.cs System.Web.System.configuration Dataac

[转]MVP+WCF+三层结构搭建项目框架

最近,我一直在重构之前做的一个项目,在这个过程中感慨万千.原先的项目是一个运用了WCF的C/S系统,在客户端运用了MVC模式,但MVC的View.Model耦合以及WCF端分布式欠佳等问题让我有了重构的想法,经过了一段时间的改造,逐渐形成了MVP+三层结构+WCF的面向服务的程序架构.在这里我把我的想法写成了一个例子,供大家参考. 在正式开始讲解之前,我必须得感谢Artech.代震军等诸多大虾,他们的文章给了我很大的启发. 我写的这个例子是关于博客管理的,逻辑很简单,就是用户发表文章.发表评论,

传统三层结构和MVC之于贫血模式和充血模式以及领域建模

相信很多人跟我一样,一开始在使用贫血模式的三层结构:抽象出来一个贫血的实体封装,然后把对模型的所有操作,分离出来,分离到BLL层去,然后DALL层负责把这些操作和数据库产生映射,负责读写删改的操作. 后来我开始使用Asp.net MVC来操作.网络上很多理论都是讲究:M是主要数据操作和实体,V 是显示层,一般为模板.而C是一个控制层,或者说调度层,负责把Model跟合适的View结合起来,最终呈现给用户.根据上述理论,我们可以知道V一般 为模板,而C其实是很薄的一层,只是一个负责调度.重要的层在

java中的mvc和三层结构究竟是什么关系

一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了. 屈指一算,手头上做过的正式项目也有了四五六七个了,不管用的数据库和其他一些细节上的技术如何,总的来说大的框架结构都是差不多的. 说白了,也就是mvc和三层结构. 而mvc和三层结构究竟是什么关系,我曾在面试的过程中被人问过几次,也曾仔细的想过.查过这个问题,但是直到此时,我也还是不能完全确定. 只不过随着时间的积累,随着技术的沉淀,随着视野的拓宽,我大体上认同了

三层结构

三层,故名思义,就是有三个层次.依次是显示层(View/UI).业务逻辑层BLL(Business Logic Layer)和数据访问层DAL(Data Access Layer).并不是所有的程序都要用三层架构,简单的问题复杂化岂不是一种愚笨的行为吗!如果我们做一个小程序,业务逻辑简单,没有真正的业务存储层,就不需要用到三层.但当你的业务复杂到一定的程度,当你的数据存取到一个独立的数据库或存储介质时就需要用到三层结构.     显示层 UI的作用就是向用户展现特定业务数据,采集用户的输入信息和

由经典的MVC模式到Web三层结构

这几天复习了一下MVC,下面就是这几天的学习笔记,有错误的地方,欢迎大家批评指正. 经典的MVC 什么是MVC? 去南京趋势科技参加实习面试的时候,面试官问了我一个问题:MVC是不是一种设计模式?当时我对MVC的理解还不够透彻,就回答了个是(最后趋势挂了!).原因很简单,文献[1]P526中说MVC是一种复合模式,那当然是设计模式了.关于MVC到底是不是一种设计模式,等我们讨论完MVC后再说.先来说说什么是MVC. M:Model 模型 负责真正的业务逻辑的处理,是MVC的核心, 模型不依赖于视

大型局域网中二层结构与三层结构

大型局域网中二层结构与三层结构 大型局域网结构千变万化.网络的规划与园区环境.应用类型密不可分.就目前而言网络结构分为大二层与三层结构.未来的发展方向是向sdn靠拢,我个人观点是自动化网络,可以实现基于业务的配置自动化,同时也可以实现故障自愈和.就结构而言在没有二三层之分了,我认为也就是一层网络.纵向虚拟化就是一层网络的很好体现. 今天主要总结了大二层与三层结构的 二层网络没有汇聚或者逻辑上没有汇聚,网关在核心.不同vlan之间直接由核心进行数据交换.同时使用mstp+vrrp技术实现网络冗余.

mvc与三层结构

http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联系到一起了. 这两个东西我接触有几年了,有一点体会,表达一下: 三层是三层,MVC是MVC,它们毫无关系的. 三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层). 三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码

lamp源码三层结构

拓扑图 apache: 192.168.1.143/24 php: 192.168.1.149/24 mysql:192.168.1.146/24 安装所需软件 Apr-1.5.1.tar.bz2  Apr-util-1.5.3.tar.bz  http://apr.apache.org/download.cgi  httpd 2.4.10.tar.bz2  http://httpd.apache.org/download.cgi#apache24  Mysql  mariadb-5.5.36-