《图书管理系统》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