《图书管理系统》设计指导书(最完整版) 下载本文

《图书管理系统》C# 设计指导书 V2.0 2013.8.1 — 9.20 LSH

型按照SQL Server字段类型设计即可。Oracle字段类型与DataTable列类型对照关系,见下表: Oracle字段类型 char, varchar2, long, clob nchar, nvarchar2, nclob numeric(,) Float rowid date raw, long raw, blob System.Decimal System.Decimal System.Decimal System.DateTime System.Byte[] DataTable中类型 System.String

建议:在DAL项目中建立2个目录SQL、Oracle,分别移入SQL Server和Oracle的DAL类文件;并分为2个命名空间,即BookManage.DAL.SQL和BookManage.DAL.Oracle

关于对多种数据库的支持见下节。

7.4 实现对多数据库的支持

修改DAL与BLL层代码。以原ReaderDAL类为例进行说明:

(1)新增接口类 IReaderDAL ,它包括原ReaderDAL类的所有public成员。

(2)ReaderDALSql及ReaderDALOracle均实现IReaderDAL接口,即2个类的外部访问接口完全相同。

public class ReaderDALSql : IReaderDAL

public class ReaderDALOracle : IReaderDAL

ReaderDALSql类的修改:从接口继承的函数不能采用静态成员函数,即去掉static ReaderDALOracle类:新增类,它与ReaderDALSql类实现的public成员函数完全相同,

但它引用的是OracleHelper类中的成员,而不是SqlHelper

(3)新增工厂类DALFactory。

public class DALFactory {

private IReaderTypeDAL readerTypeDAL; private IReaderDAL readerDAL; public string GetDBSource() {

return (\); //使用SQL Server //return (\使用Oracle }

public IReaderTypeDAL GetReaderTypeDAL() {

45 / 47

《图书管理系统》C# 设计指导书 V2.0

if (GetDBSource() == \) else

2013.8.1 — 9.20 LSH

readerTypeDAL = new ReaderTypeDALSql(); readerTypeDAL = new ReaderTypeDALOracle(); return readerTypeDAL; }

public IReaderDAL GetReaderDAL() {

if (GetDBSource() == \)

readerDAL = new ReaderDALSql(); else

readerDAL = new ReaderDALOracle(); return readerDAL; }

}

(4)修改BLL层ReaderAdmin类

7.5 软件发布、部署与自动更新

作为产品,应该将使用SQL还是Oracle以及相应的连接字符串(在SqlHelper和OracleHelper类中)移出到程序外部,即将SQL或Oracle以及连接字符串加密后作为外部文件存放,程序运行时读取该文件并解密。

46 / 47

《图书管理系统》C# 设计指导书 V2.0 2013.8.1 — 9.20 LSH

软件包括4个模块的版本升级与更新,即BookManage.Model.dll、BookManage.DAL.dll、BookManage.BLL.dll、BookManage.exe等文件。可将4个文件放在一个FTP服务器或Web服务器的固定目录上,在BookManage.exe程序中增加一个“检查更新”菜单及功能模块,用户启动或定时自动启动该功能。

当然使用VS .NET自身的部署功能,就更加方便了,如部署项目、ClickOnce等。

长江大学 计算机学院

梁少华

2013年9月20日

47 / 47