您的位置:首页 > 编程语言 > ASP

asp.net 2.0 三层架构的实现(最最原始,简单,一般, 但不平凡)用通俗的语言说出难以理解的。。。

2007-07-26 18:14 1061 查看

《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 三层架构完成!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: