欢迎使用CSDN-markdown编辑器

三层架构
这里写图片描述

DAL数据访问层: BooksRatingService各种service类定义 各种使用sqlhelper定义数据库的操作方法将sql字段加载进去各种具体的数据操作的方法
BLL逻辑业务层:BookManager各种manager类调用DAL层类方法定义对model类的操作方法
models实体类:定义实体类 设置 获得方法,数据传输的中间媒介
web层:视图文件,布局 脚本 样式,aspx文件布局+aspx.cs文件进行数据与控件的交互
DAL中的sqlhelper定义数据库操作方法
Bin文件夹中引用dll文件

model类代码:作为数据操作媒介
private DateTime createdTime;
public DateTime CreatedTime
{
get { return createdTime; }
set { createdTime = value; }
}

SqlHelper类代码:定义数据操作方法
Method:readData DataSet Query sqlcmd
Reader_data:ExecuteReader()
DataSet:ExecuteDataset()
Query_Data: ExecuteNonQuery(),
insertData: ExecuteScalar()
Sqlcmd_execute: PrepareCommand()

//Database connection strings
public static readonly string ConnectionString = ConfigurationManager.ConnectionStrings[“BookShop”].ConnectionString;
ExecuteNonQuery
///
/// 执行Sql Server存储过程
/// 注意:不能执行有out 参数的存储过程
///
/// 连接字符串
/// 存储过程名
/// 对象参数
/// 受影响的行数
public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, conn, spName, parameterValues);
int val = cmd.ExecuteNonQuery();
return val;
}
}

ExecuteReader
///
/// 执行sql命令
///
/// 连接字符串
/// 命令类型
/// sql语句/参数化sql语句/存储过程名
/// 参数
/// SqlDataReader 对象
public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{

        SqlConnection conn = new SqlConnection(connectionString);
        try
        {
            SqlCommand cmd = new SqlCommand();
            PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
            SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return rdr;
        }
        catch
        {
            conn.Close();
            throw;
        }
    }

ExecuteDataset
//set the data to the dataAdapter
public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, conn, spName, parameterValues);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
}

ExecuteScalar
///
/// 执行Sql 命令
///
/// 连接字符串
/// 命令类型
/// sql语句/参数化sql语句/存储过程名
/// 参数
/// 执行结果对象
public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
object val = cmd.ExecuteScalar();
return val;
}
}

PrepareCommand
///
/// 设置一个等待执行的SqlCommand对象
///
/// SqlCommand 对象,不允许空对象
/// SqlConnection 对象,不允许空对象
/// Sql 语句
/// SqlParameters 对象,允许为空对象
private static void PrepareCommand(SqlCommand cmd, CommandType commandType, SqlConnection conn, string commandText, SqlParameter[] cmdParms)
{
//打开连接
if (conn.State != ConnectionState.Open)
conn.Open();

        //设置SqlCommand对象
        cmd.Connection = conn;
        cmd.CommandText = commandText;
        cmd.CommandType = commandType;

        if (cmdParms != null)
        {
            foreach (SqlParameter parm in cmdParms)
                cmd.Parameters.Add(parm);
        }
    }

DAL类代码:cast datas to models
设置/获得参数,传入sqlhelper方法 得到数据映射到实体类 用实体类对数据进行具体操作
Method:
get list of items: GetBookRatings(int bookId), GetBookRatings(string safeSql)
insert Data: AddBookRating()
get Data: GetBookRatings()

BooksRatingService:
//database connection strings
string connection =ConfigurationManager.ConnectionStrings[“BookShop”].ConnectionString;
AddBookRating
//method: insert data by casting data to models
public bool AddBookRating(BookRatings bookrating)
{
string sql =
“INSERT BookRatings (BookId,UserId,Rating,Comment)” +
“VALUES (@BookId, @UserId, @Rating, @Comment)”;

        sql += " ; SELECT @@IDENTITY";
        SqlParameter[] para = new SqlParameter[]
            {
                new SqlParameter("@BookId", bookrating.BookId), 
                new SqlParameter("@UserId", bookrating.User.Id), 
                new SqlParameter("@Rating", bookrating.Rating),
                new SqlParameter("@Comment",bookrating.Comment)
            };

        bookrating.Id = Convert.ToInt32(SqlHelper.ExecuteScalar(this.connection, CommandType.Text, sql, para));
        return bookrating.Id > 0;
    }

GetBookRatings
//method:get specially data according to terms
///
/// 根据书的Id得到其评价信息
///
///
///
//get bookRatings list of specially book by id
public List GetBookRatings(int bookId)
{
string sql = “select * from bookratings where bookid=’” + bookId + “’”;
return this.GetBookRatings(sql);
}
//get list of bookRatings by sql
private List GetBookRatings(string safeSql)
{
List list = new List();
DataSet ds = SqlHelper.ExecuteDataset(this.connection, CommandType.Text, safeSql);
if (ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];
//cast data to models by traversing dataRow
foreach (DataRow row in dt.Rows)
{
BookRatings brating = new BookRatings();
brating.Id = (int)row[“Id”];
brating.BookId = (int)row[“BookId”];
brating.Rating = (int)row[“Rating”];
int userId = (int)row[“userid”];
brating.User = new UserService().GetUserById(userId);
brating.Comment = (string)row[“Comment”];
brating.CreatedTime = (DateTime)row[“CreatedTime”];
list.Add(brating);
}
}
return list;

    }

GetCategoryById
//cast data to model
public Category GetCategoryById(Int32 id)
{
string sql = “SELECT * FROM Categories WHERE Id = @Id”;
Category category = null;
using (SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text, sql, new SqlParameter(“@Id”, id)))
{
if (reader.Read())
{
category = new Category();

                category.Id = (int)reader["Id"];
                category.Name = (string)reader["Name"];
                category.PId = (int)reader["PId"];
            }
        }
        return category;
    }

BLL类代码:get and set models List
Get models list
public List GetCategories()
{
//调用DAL类方法返回实体类列表
return new CategoryService().GetCategories();
}
Set Models list
public void AddCategory(Category category)
{
//调用DAL类方法定义添加实体类
new CategoryService().AddCategory(category);
}
Get specially terms of models list by parameter
public List GetBookRatings(int bookId)
{
return new BooksRatingService().GetBookRatings(bookId);
}

Web
Common.master 通用视图 用于引用提高代码重用度
Common.master.cs 从数据库读取数据定义视图
Admin.master 管理者通用视图
Admin.master.cs 从数据库读取数据定义视图

region Method_name

代码显示缩进

endregion

注释:说明方法用途,参数,返回对象
///
/// 执行Sql 命令
///
/// 连接字符串
/// 命令类型
/// sql语句/参数化sql语句/存储过程名
/// 参数
/// DataSet 对象

App_code: Category.cs
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public int Pid { get; set; }
public int SortNum { get; set; }
}
Web.Config




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值