asp.net 2.0 三层架构的实现(最最原始,简单,一般, 但不平凡)用通俗的语言说出难以理解的。。。
来源:互联网 发布:win7重启后数据不对 编辑:程序博客网 时间:2024/05/12 11:10
《1》 第一层 表示层 用通俗的语言就是 UI 界面, 再通俗点就是我们平时上网时看到的界面。
《2》 第二层 业务逻辑层 ,,,说白了 ,就是 一个类 ,该类利用下边一层 ( 数据访问层 的方法返回的结果 DataSet ) 把 各个数据对象分解,再 从新 以更小的对象存储起来 (更加的有机体)
等待上层的应用。
《3》 第三层 数据访问曾 。 该层说白了也是一个类 。 该类 其实是把数据库里的 数据 用该类的方法( 以sql查询为核心) 执行。 ( SRUD );
下面给出示例代码:
界面:
web.congfig
数据访问层代码:
using System.Web;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
public class AuthorDB
{
//构造函数
public AuthorDB()
{ }
//获取state集合。返回DataSet,并通过DropDownList显示
public static DataSet GetStates()
{
//获取连接字符串
string connectionString = ConfigurationManager.ConnectionStrings["PubsConnectionString"].ConnectionString;
//创建并设置SqlConnection
SqlConnection dbConnection = new SqlConnection(connectionString);
//定义SQL查询语句
string queryString = "Select distinct state from authors";
//创建并设置SqlCommand
SqlCommand dbCommand = new SqlCommand();
dbCommand.Connection = dbConnection;
dbCommand.CommandType = CommandType.Text;
dbCommand.CommandText = queryString;
//创建SqlDataAdapter,并获取数据
SqlDataAdapter dataAdapter = new SqlDataAdapter(dbCommand);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
//返回数据
return ds;
}
// 根据state参数,获取数据记录。返回DataSet,并通过GridView显示
public static DataSet GetAuthorsByState(string state)
{
//获取连接字符串
string connectionString = ConfigurationManager.ConnectionStrings["PubsConnectionString"].ConnectionString;
//创建并设置SqlConnection
SqlConnection dbConnection = new SqlConnection(connectionString);
//定义SQL查询语句
string queryString = "Select au_id,au_lname,au_fname,state from authors where state=@state";
//创建并设置SqlCommand
SqlCommand dbCommand = new SqlCommand();
dbCommand.Connection = dbConnection;
dbCommand.CommandType = CommandType.Text;
dbCommand.CommandText = queryString;
//设置SqlParameter
SqlParameter dbParameter_state = new SqlParameter();
dbParameter_state.ParameterName = "@state";
dbParameter_state.Value = state;
dbParameter_state.DbType = DbType.StringFixedLength;
//向SqlCommmand中添加SqlParameter
dbCommand.Parameters.Add(dbParameter_state);
//创建SqlDataAdapter,并获取数据
SqlDataAdapter dataAdapter = new SqlDataAdapter(dbCommand);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
//返回数据
return ds;
}
//更新数据记录
public static int UpdateAuthor(string au_id, string au_lname, string au_fname, string state)
{
//获取连接字符串
string connectionString = ConfigurationManager.ConnectionStrings["PubsConnectionString"].ConnectionString;
//创建并设置SqlConnection
SqlConnection dbConnection = new SqlConnection(connectionString);
//定义SQL查询语句
string queryString = "UPDATE authors SET au_fname=@au_fname, au_lname=@au_lname, state=@state WHERE au_id = @au_id";
//创建并设置SqlCommand
SqlCommand dbCommand = new SqlCommand();
dbCommand.Connection = dbConnection;
dbCommand.CommandType = CommandType.Text;
dbCommand.CommandText = queryString;
//设置参数@au_id
SqlParameter dbParameter_au_id = new SqlParameter();
dbParameter_au_id.ParameterName = "@au_id";
dbParameter_au_id.Value = au_id;
dbParameter_au_id.DbType = DbType.String;
//向SqlCommmand中添加@au_id
dbCommand.Parameters.Add(dbParameter_au_id);
//设置参数@au_lname
SqlParameter dbParameter_au_lname = new SqlParameter();
dbParameter_au_lname.ParameterName = "@au_lname";
dbParameter_au_lname.Value = au_lname;
dbParameter_au_lname.DbType = DbType.String;
//向SqlCommmand中添加@au_lname
dbCommand.Parameters.Add(dbParameter_au_lname);
//设置参数@au_fname
SqlParameter dbParameter_au_fname = new SqlParameter();
dbParameter_au_fname.ParameterName = "@au_fname";
dbParameter_au_fname.Value = au_fname;
dbParameter_au_fname.DbType = DbType.String;
//向SqlCommmand中添加@au_fname
dbCommand.Parameters.Add(dbParameter_au_fname);
//设置参数@state
SqlParameter dbParameter_state = new SqlParameter();
dbParameter_state.ParameterName = "@state";
dbParameter_state.Value = state;
dbParameter_state.DbType = DbType.StringFixedLength;
//向SqlCommmand中添加@state
dbCommand.Parameters.Add(dbParameter_state);
//执行SQL语句,并且返回受影响的行数
int rowsAffected = 0;
dbConnection.Open();
try
{
rowsAffected = dbCommand.ExecuteNonQuery();
}
finally
{
dbConnection.Close();
}
return rowsAffected;
}
}
业务实体类代码:
using System;
public class Author
{
#region 定义私有字段
private string _id;
private string _firstname;
private string _lastName;
private string _state;
#endregion
#region 定义属性
//定义属性ID
public string ID
{
get
{
return _id;
}
set
{
_id = value;
}
}
//定义属性FirstName
public string FirstName
{
get
{
return _firstname;
}
set
{
_firstname = value;
}
}
//定义属性LastName
public string LastName
{
get
{
return _lastName;
}
set
{
_lastName = value;
}
}
//定义属性State
public string State
{
get
{
return _state;
}
set
{
_state = value;
}
}
#endregion
#region 定义构造函数
//定义构造函数1
public Author()
{
}
//定义构造函数2
public Author(string id, string lastname, string firstname, string state)
{
this.ID = id;
this.FirstName = firstname;
this.LastName = lastname;
this.State = state;
}
#endregion
}
业务逻辑类代码:
using System;
using System.Data;
using System.Collections.Generic;
public class AuthorsComponent
{
#region 定义构造函数
public AuthorsComponent()
{
}
#endregion
#region 实现方法
//根据参数state和sortExpression,实现获取Author对象集合并对其排序
public List<Author> GetAuthorsByState(string state, string sortExpression)
{
//初始化Author对象集合实例
List<Author> authors = new List<Author>();
//从数据访问层获取DataSet类型返回数据
DataSet ds = AuthorDB.GetAuthorsByState(state);
//使用返回数据填充Author对象集合
foreach (DataRow row in ds.Tables[0].Rows)
{
authors.Add(new Author((string)row["au_id"], (string)row["au_lname"], (string)row["au_fname"], (string)row["state"]));
}
//实现自定义排序
authors.Sort(new AuthorComparer(sortExpression));
//返回Author对象集合
return authors;
}
//实现参数为Author对象时,数据的更新方法
public int UpdateAuthor(Author a)
{
//调用数据访问层静态方法
return AuthorDB.UpdateAuthor(a.ID, a.LastName, a.FirstName, a.State);
}
//实现参数为值类型时,数据的更新方法
public int UpdateAuthor(string ID, string LastName, string FirstName, string State)
{
//调用数据访问层静态方法
return AuthorDB.UpdateAuthor(ID, LastName, FirstName, State);
}
//获取返回值为泛型的地区名集合
public List<String> GetStates()
{
//初始化泛型对象实例
List<String> states = new List<string>();
//从数据访问层获取DataSet类型的地区名集合
DataSet ds = AuthorDB.GetStates();
//填充泛型对象
foreach (DataRow row in ds.Tables[0].Rows)
{
states.Add((String)row["state"]);
}
//返回泛型对象
return states;
}
#endregion
}
//实现自定义排序,该类实现泛型的IComparer接口
public class AuthorComparer : IComparer<Author>
{
private string _sortColumn;
private bool _reverse;
//自定义构造函数
public AuthorComparer(string sortExpression)
{
_reverse = sortExpression.ToLowerInvariant().EndsWith(" desc");
if (_reverse)
{
_sortColumn = sortExpression.Substring(0, sortExpression.Length - 5);
}
else
{
_sortColumn = sortExpression;
}
}
//实现接口定义的Compare方法,比较两个Author对象实例
public int Compare(Author a, Author b)
{
int retVal = 0;
switch (_sortColumn)
{
case "ID":
retVal = String.Compare(a.ID, b.ID, StringComparison.InvariantCultureIgnoreCase);
break;
case "FirstName":
retVal = String.Compare(a.FirstName, b.FirstName, StringComparison.InvariantCultureIgnoreCase);
break;
case "LastName":
retVal = String.Compare(a.LastName, b.LastName, StringComparison.InvariantCultureIgnoreCase);
break;
case "State":
retVal = String.Compare(a.State, b.State, StringComparison.InvariantCultureIgnoreCase);
break;
}
return (retVal * (_reverse ? -1 : 1));
}
}
OK 三层架构完成!!
- asp.net 2.0 三层架构的实现(最最原始,简单,一般, 但不平凡)用通俗的语言说出难以理解的。。。
- 不平凡的2008
- 不平凡的一天
- 对asp.net三层架构的理解
- ASP.NET三层架构的一个简单实现
- Asp.net 2.0三层架构的构建与理解
- Asp.net 2.0三层架构的构建与理解
- Asp.net 2.0三层架构的构建与理解
- 一条不平凡的路
- 3.22不平凡的一天
- 不平凡的一年 2013
- 不平凡的泛型
- android之自定义简单不平凡的对话框
- ASP.net的三层架构
- ASP.NET的三层架构
- 如何理解ASP.NET中“三层架构”的概念
- ASP.NET入门--概念理解--三层架构的疑问
- 关于ASP.NET中经典三层架构的理解
- C#中的delegate和event
- 基于.Net开发的WEB图像制作工具XPaint(1)
- 提高ASP.Net应用程序性能的十大方法
- 2005-10-07 00:33 唱K
- ASP中的正则表达式
- asp.net 2.0 三层架构的实现(最最原始,简单,一般, 但不平凡)用通俗的语言说出难以理解的。。。
- ActionMessage与ActionError
- 2005-10-14 18:30 追忆
- OpenGL绘图环境建立的关键步骤
- 2005-10-14 18:56 追忆2
- 遭遇Worm.Win32.Viking.lm/Worm.Viking.tc,Trojan.PSW.Win32.OnlineGames等2
- 一道面试题,java编写decode方法
- 2005-10-16 00:45 考研
- ASP.NET所谓得三层分层的小解