《图书管理系统》C# 设计指导书 V2.0 2013.8.1 — 9.20 LSH
考资料03 微软的SQLHelper类(含完整中文注释).cs”)的简化版(有源码提供)。
SqlHelper类主要包括的成员函数有:打开数据库连接、关闭数据库连接、执行SQL语句、执行存储过程等。
表5 SqlHelper类(简化版)成员 1# private static string _strConnection = @\Source=LSH-SL400\\SQLSERVER; Initial Catalog=Library;User ID=BookManage;Password=123;\; <成员属性> -连接SQL Server的字符串(常量)。 -- LSH-SL400\\SQLSERVER为服务器名称,可在SQL Server Management Studio的“已注册服务器”中查看(菜单:“视图”->“已注册服务器”)。 -- 需修改为自己的连接。可手动修改,或可采用MS VS的服务器资源管理器得到(菜单:“视图”->“服务器资源管理器”,“数据连接”->“添加连接”)。 2# 3# 4# 5 private static SqlConnection conn = new SqlConnection(_strConnection); <成员属性> -SQL Server数据库连接对象(常量); private static void OpenConn() <成员函数> -打开数据库连接 private static void CloseConn() <成员函数> -关闭数据库连接 public static int ExecuteNonQuery(string sql) <成员函数> -执行非查询的SQL语句,返回受影响的行数 -- sql指定要执行的SQL语句, -- 例:sql = \; 6# public static int ExecuteNonQuery(string sql, SqlParameter[] parameters) <成员函数> -执行非查询的SQL语句(带参数),返回受影响的行数 -- 参见:6.6-2中的ReaderTypeDAL.Add() 函数代码 7 8# 9# public static object ExecuteScalar(string sql) <成员函数> -执行查询语句,返回查询结果中的首行首列 public static object ExecuteScalar(string sql, SqlParameter[] parameters) <成员函数> -执行查询语句(带参数),返回查询结果中的首行首列 public static DataTable GetDataTable(string sql, SqlParameter[] parameters, string TableName) <成员函数> -执行查询语句(带参数),返回查询结果记录集(DataTable对象) -- 参见:6.6-2中的ReaderTypeDAL.GetDRByID()函数代码 10# public static SqlDataReader GetDataReader(string sql) <成员函数> -执行查询语句,返回查询结果记录集。SqlDataReader为只读对象,它占用的内存空间比DataTable小的多。 11# public static int ExecuteStoredProc(string storedProcName, SqlParameter[] parameters) <成员函数> -执行非查询的存储过程,返回受影响的行数 -- parameters指定存储过程的函数实参 -- 参见: 12# public static DataTable ExecuteStoredProc(string storedPrecName, SqlParameter[] parameters, string TableName) <成员函数> -执行查询的存储过程,返回查询结果记录集 -- 参见: 表中标注#为必要的类成员,成员5、7可分别被6、8替代,大家可以试试将成员10改写为带参数的函数。ADO.NET类与相关组件的用法参见“参考资料02 ADO.NET用法.cs”。
21 / 47
《图书管理系统》C# 设计指导书 V2.0 2013.8.1 — 9.20 LSH
2. ReaderTypeDAL类
DAL层的类主要实现对应数据表的插、删、改、查等操作,以及存储过程的调用。 首先,在DAL项目中添加C#代码类文件-ReaderTypeDAL.cs,并在文件中添加引用:
using System.Data.SqlClient; using System.Data; using BookManage.Model;
然后,在ReaderTypeDAL类中添加对表TB_ReaderType记录的插入Add()、删除Delete()、修改Update()等3个方法。
注:带参数SqlParameter[] parameters的SqlHelper.ExecuteNonQuery(sql, parameters)方法,支持带image列的插入和修改SQL语句。
22 / 47
《图书管理系统》C# 设计指导书 V2.0 2013.8.1 — 9.20 LSH
然后,在ReaderTypeDAL类中添加根据关键字查询ReaderType实体类对象的方法GetObjectByID(),这里提取出了另一个方法GetDRByID()。
23 / 47
《图书管理系统》C# 设计指导书 V2.0 2013.8.1 — 9.20 LSH
有2个常用的通用转换方法,采用C#的泛型和反射技术分别实现DataTable和DataRow到实体类对象的转换;算法要求:表记录(DataTable或DataRow)包含了实体类T的所有属性,并且表字段名与T的属性名相同。
可以另建一个C#工程BookManage.Common(公用模块,可被DAL、BLL、UI各层引用,在三层架构图中地位如同Model模块),并将这2个方法放入其中;本例采用的是放入SqlHelper类中。这2个方法的代码如下:
24 / 47