专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > DBA实战 > DBA课程 > Oracle培训教程:抽象工厂中加入Oracle

Oracle培训教程:抽象工厂中加入Oracle

文章来源: 更新时间:2016/7/20 16:17:35

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

Oracle培训教程:抽象工厂中加入Oracle,在设计模式中介绍过抽象工厂设计模式(Abstract Factory),抽象工厂有四种关键角色:抽象工厂、实体工厂、抽象产品、实体产品。抽象工厂模式实现原理强调的是对象组合机制,由在“父工厂”内定义不同的“子工厂”对象来负责不同的目标对象的创建,也就是说利用实体产品由抽象产品来约束,而由实体工厂来创建,实体工厂则由抽象工厂约束,可以有效的发挥工厂模式管理清晰的优点。

案例2:采用抽象工厂模式实现在学员信息管理系统中支持Access、SQLServer以及Oracle三套数据库的切换(以学员基本信息模块为例),以学员基本信息模块为例给出概要的实现,并实现展示所有学生信息功能。

案例分析:本例是抽象工厂课堂案例的延续,需要在项目中多添加一个Oracle数据库,实体产品是数据访问对象,三套数据库相当于有三套数据库访问对象,通过三个实体工厂管理三套数据库访问对象,最后使用抽象工厂管理三个实体工厂。

实现步骤:

1. 在Oracle数据库中使用Sql语句新建Infos表,并添加约束和表数据,如图3所示:

图3 Student表数据

2. 在VS2008中创建空白解决方案,命名为Test.sln。

3. 在解决方案中添加表示层,并添加StudentList.aspx页面。

4. 在解决方案中添加模型层,根据上面的表结构新建Student.cs实体类。

代码演示:Student类

public class Student

{

    string stuID;

 

    public string StuID

    {

        get { return stuID; }

        set { stuID = value; }

    }

 

    /**

* 其他成员… …

*/

}

5. 在解决方案中添加数据访问层IDAL(抽象产品)。

代码演示:抽象产品

public interface IStudentService

{

    //获取所有学生信息

    IList<Student> GetAllStudents();

}

6. 在解决方案中添加数据访问层DAL(实体产品),并利用文件夹将不同的实体产品分类,如图4所示。

图4 实体产品

代码演示:实体产品

/// <summary>

/// 获得所有学生信息

/// </summary>

/// <returns>所有学生信息集合</returns>

public IList<Student> GetAllStudents()

{

    //创建SQL语句

    string sql = "select * from sys.infos";

    //创建泛型集合

    IList<Student> students = new List<Student>();

    //执行SQL语句得到结果集

    OracleDataReader odr = dbh.ExecuteReader(sql);

    //遍历结果集

    while(odr.Read())

    {

        Student student = new Student();

 

        student.StuID = Convert.ToString(odr["StuID"]);

        student.StuName = Convert.ToString(odr["StuName"]);

        student.StuAddress = Convert.ToString(odr["StuAddress"]);

        student.Seat = Convert.ToInt32(odr["Seat"]);

        student.Gender = Convert.ToString(odr["Gender"]);

        student.EnRollDate = Convert.ToDateTime(odr["EnRollDate"]);

        student.ClassNo = Convert. ToString (odr["ClassNo"]);

        //添加到泛型集合

        students.Add(student);

    }

    //返回

    return students;

}

7. 在解决方案中添加业务逻辑层,命名为StudentManager.cs。

代码演示:BLL层

/// <summary>

/// 获取所有学生信息

/// </summary>

/// <returns>所有学生信息集合</returns>

public IList<Student> GetAllStudents()

{

    //利用抽象工厂创建实体工厂

    Factory factory = Factory.CreateFactory();

    //利用工厂创建产品

    IStudentService iss = factory.GetStudentService();

    return iss.GetAllStudents();

}

8. 在解决方案中添加抽象工厂,并添加相应实体工厂,如图5所示。

图5 抽象工厂

代码演示:抽象工厂

//抽象工厂

public abstract class Factory

{

    public static Factory CreateFactory()

    {

        //采用反射技术得到配置文件中的配置信息

        string factoryType = Config.FactoryType;

        Factory factory =

            (Factory)System.Reflection.Assembly.Load("DBFactory").CreateInstance(factoryType);

        return factory;

    }

 

    //定义子类(实体工厂)的操作规则

    public abstract IStudentService GetStudentService();

}

9. 在表示层添加数据展示控件,通过设定属性绑定数据提取方法,实现案例目标。

本文地址:http://www.cuug.com.cn/dba/kecheng/12525238143.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1