C#三层架构详解与实用示例

需积分: 8 5 下载量 55 浏览量 更新于2024-09-11 收藏 5KB TXT 举报
C#三层架构是一种在软件开发中广泛应用的设计模式,它将应用程序分为三个主要层次:表示层、业务逻辑层和数据访问层,以此实现系统模块化和解耦。在这个文件中,我们看到的是一个名为`SQLHelper`的类,它位于`DataAccess`命名空间内,这通常是在实现三层架构时的数据访问层部分。 首先,`SQLHelper`类包含两个方法:`ExecuteDataSet`和`ExecuteDataTable`。这两个方法的核心作用是执行数据库存储过程(通过`SqlCommand`对象)并返回结果集。让我们详细分析这两个方法: 1. `ExecuteDataSet(string procName, SqlParameter[] prams)` 方法: - 此方法接收两个参数:`procName`(存储过程名称),`prams`(用于存储过程的参数数组)。它首先创建一个新的`SqlConnection`对象,配置连接字符串(这里使用了`System.Configuration`来读取数据库连接配置信息,`datasource=.` 表示本地计算机,`initialcatalog=student` 指定了数据库名,`integratedsecurity=sspi`表示使用Windows身份验证)。 - 接着,通过`SqlCommand`的构造函数传入存储过程名称和连接对象,并设置其`CommandType`为`CommandType.StoredProcedure`,表示接下来的操作是存储过程调用。 - 如果`prams`参数不为空,遍历`SqlParameter`数组并将每个参数添加到`SqlCommand`的`Parameters`集合中,这样可以防止SQL注入攻击。 - 使用`SqlDataAdapter`将执行的结果填充到`DataSet`对象中,最后返回这个数据集。 - 在操作结束后,清空`SqlCommand`的参数集合,以释放资源。 2. `ExecuteDataTable(string procName, SqlParameter[] prams)` 方法: - 类似于`ExecuteDataSet`方法,但返回类型不同,这里返回的是`DataTable`,适用于只需要表结构数据的情况。数据填充后,同样清空参数集合。 这个`SQLHelper`类的主要职责是封装底层数据库操作,提供给业务逻辑层和表示层调用,实现了三层架构中的数据访问层对业务逻辑的隔离。通过这种方式,当系统需要更改数据库实现(如从SQL Server迁移到Oracle)时,只需修改数据访问层的部分代码,而不会影响表示层和业务逻辑层的其他代码,提高了系统的灵活性和可维护性。