将 OData 用于 IBM DB2 和 Informix

分步指南

本文首先会简要介绍 OData,这是一种用于数据访问的 Web API。然后本文会介绍如何将 OData 用于 IBM® DB2® for Linux®, UNIX®, and Windows®、DB2 for z/OS® 和 DB2 for Informix®。最后,本文提供了结合使用 Microsoft® Visual Studio 公开来自 DB2 的 OData 的逐步说明。

John Gera, 软件工程师, IBM

Gera 的照片John Gera 是 IBM DB2 Information Management Support 团队的一名软件工程师。他拥有计算机科学硕士学位,是面向 DB2 V9.1 和 DB2 V9.7 的 IBM 认证的 DB2 数据库管理员。他专攻 DB2 高可用性 (HA) 功能。



Brent Gross, 高级技术研究员, IBM

BRent GrossBrent Gross 是多伦多实验室的一位从事 IBM Information Management 开发的高级技术员。他拥有 20 多年在 IBM 工作的经验,自 1995 年就开始开发 DB2。他的职责包括存储过程支持和客户端界面的架构和开发。Brent 出席过许多 DB2 和用户组大会,他目前的职位是 DB2 和 DB2 Connect 的 .NET 和 OLE DB API 的架构师。



Susan Malaika, 资深技术人员, IBM  

Susan MalaikaSusan Malaika 在 IBM Information Management Group 工作。她的专长包括 XML、Web 技术和网格计算。她与人合作出版了关于 Web 的专著,发表了关于 Web 的文章。她是 IBM Academy of Technology 的成员。



2012 年 9 月 24 日

免费下载:IBM® Data Studio V3.1 免费版或者 IBM® Optim® Database Administrator 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

OData(请参阅 参考资料 一节了解更多信息)是一个用于数据访问 Web API 的规范,旨在使数据库中的表等资源可从 Web 浏览器和移动设备访问。OData 指定通过 HTTP 对资源(数据或应用程序)的创建、读取、更新、删除 (CRUD) 和查询。它还指定了将结果格式化为 ATOM (XML) 和 JSON 的方式。OData 类似于一种用于 Web 的微型 ODBC 或 JDBC。更准确地讲,OData 允许客户端构造 URI 来命名一个实体集,过滤它包含的实体,并遍历与相关实体和实体集合之间的关系。

图 1 显示了如何通过 ADO.Net 支持在 Web 上公开 DB2 或 Informix。Microsoft Visual Studio 提供了一些工具,使数据库数据可通过 HTTP 在 Web 上公开。数据库数据可通过 OData 语法从 Web 浏览器和其他 OData 使用程序创建、更新、删除和查询(请参阅 参考资料 一节,了解有关的更多信息)。

图 1. OData 概述
该图在左侧显示了 Web 浏览器,它们通过固定查询和 CRUD 服务连接到 OData 服务提供程序,后者连接到 DB2 或 Informix 数据库

图 2 显示了 CSDL(概念模式定义语言),CSDL 是一种 XML 表示法,它使用可通过 OData 访问的一种实体关系模型来描述基础资源。

图 2. CSDL(概念模式定义语言)
该图在左侧显示了 Web 浏览器,它通过固定查询和 CRUD 服务连接到 OData CSDL、OData Service Provider、ADO.Net 支持解决方案和 DB2 或 Informix

在开发时常常会用到 CSDL,例如在工具或模型映射器中。CSDL 是可选的,由 Visual Studio 生成,可用来帮助用户应用程序理解公开的数据的结构。CSDL 类似于 JDBC 和 ODBC 中的元数据,可帮助客户端应用程序理解它们访问的内容。


在 Web 上使用 OData 公开示例数据库中的表

后面几节将详细介绍如何执行以下操作。

  • 执行初始设置,比如定义数据库连接。
  • 创建一个 ADO.Net 实体模型。
  • 选择将通过 OData 公开的 DB2 表。
  • 为所选的表创建一个 OData 服务(WCF 服务)。
  • 测试 OData 服务。

该描述使用合并到 Microsoft Visual Studio 中 OData 运行时。但是,在 Visual Studio 中测试了支持之后,可以使用其他 OData 运行时。请参阅 参考资料 一节,了解有关的更多信息。

创建一个新网站

  1. 启动 Visual Studio。在 File 菜单中单击 New Web Site。系统会显示一个 New Web Site 对话框。
  2. Installed Templates 下的左侧窗格中,选择 Visual C#
  3. 在中央窗格中,选择 ASP.NET Dynamic Entities Web Site
  4. Web location 框中,选择 File System,然后输入您希望存储网站页面的文件夹名称。例如,键入文件夹名称 C:\WebSites\DB2OData 并单击 OK。Visual Studio 创建好了该网站,如图 3 所示。
图 3. 一个新网站
该图显示了已选中的 ASP.NET Dynamic Entities Web Site

向 Server Explorer 添加一个数据连接

  1. Tools 菜单中选择 Connect to Database。此时会显示 Add Connection 对话框。
  2. 单击 IBM DB2 and IDS Servers,如图 4 所示,然后单击 Continue
    图 4. 向 Server Explorer 添加数据连接
    该图显示了已选中的 IBM DB2 and IDS Servers
  3. 如图 5 所示,在 Select or enter server name 框中,输入 127.0.0.1/localhost 或主机名。在 User ID 框中,键入 db2admin。在 Password 框中,输入您的密码。选择 Save my password 复选框。
    图 5. 连接信息
    该图显示了连接信息
  4. 在 Select or enter a Database Name 框中,为数据库键入一个名称,比如 SAMPLE
  5. 单击 Test Connection,然后单击 OK
  6. 如图 6 所示,在 Server Explorer 中,您可以选择展开 Data Connections 并查看数据库表。
    图 6. 数据库表
    该图显示了数据库表的资源管理器视图

向网站添加数据并创建一个新的 ADO.NET 实体数据模型

需要一个实体数据模型来使用 WCF 数据服务公开 DB2 数据。执行以下步骤,向站点添加数据,并创建 ADO.NET 实体数据模型。

  1. 在 Solution Explorer 中,右键单击项目,然后单击 New Item。将显示 Add New Item 对话框。
  2. Installed Templates 下的左侧窗格中,选择 Visual C#。在中央面板中,选择 ADO.NET Entity Data Model
  3. Name 框中,为数据库模型键入一个名称。例如,输入名称 DB2.edmx,然后单击 Add,如图 7 所示。
    图 7. 创建实体数据模型
    该图显示了已选中的 ADO.NET Entity Data Model
  4. 当获得提示时单击 Yes
  5. 从 Entity Data Model Wizard 中选择 Generate from database,然后单击 Next,如图 8 所示。
    图 8. Entity data model wizard
    该图显示了已选中的 Generate from database
    此时将会显示 Choose Your Data Connection 对话框。
  6. 在下拉列表中,选择您以前配置的连接。例如,db2admin@SAMPLE。单击 Yes 以在连接字符串中包含敏感数据(用户名和密码),然后单击 Next,如图 9 所示。
    图 9. 选择您的数据连接
    该图显示了数据连接的详细信息
    此时将会显示 Choose Your Database Objects 对话框。
  7. 单击三角形展开 Tables 节点。选择 DEPARTMENTEMPLOYEE 表的复选框,然后单击 Finish,如图 10 所示。
    图 10. 选择您的数据对象
    该图显示了已选中的 department 和 employee 表
  8. 此时将会显示具有 Entity Data Model 的 DB2.edmx 页面,如图 11 所示。
    图 11. DB2.edmx 页面
    该图显示了 employee 和 department 表的实体数据模型

注册数据内容

  1. 如图 12 和图 13 所示,从 Solution Explorer 中打开 Global.asax 文件。
  2. 取消注释包含 DefaultModel.RegisterContext 方法的行。
  3. 将上下文类型设置为 SAMPLEModel.SAMPLEEntities,将变量 ScaffoldAllTables 设置为 True
    图 12. Global.asax(DefaultModel.RegisterContext 方法 - 已注释)
    包含 DefaultModel.RegisterContext 方法的行已注释
    图 13. Global.asax(DefaultModel.RegisterContext 方法 - 已取消注释)
    包含 DefaultModel.RegisterContext 方法的行已取消注释
  4. 保存 Global.asax 文件。

添加 WCF 数据服务

  1. 从 Solution Explorer 中右键单击项目名称 DB2OData。此时将会显示 Add New Item 对话框。
  2. 在 Installed Templates 下,在左侧窗格中,选择 Visual C#,在中央窗格中单击 WCF Data Service
  3. 在 Name 框中,为数据服务输入一个名称,比如 WcfDataService.svc,然后单击 Add,如图 14 所示。
    图 14. 添加 WCF 数据服务
    该图显示了已选中的 WCF Data Service

配置 WCF 数据服务

  1. 如图 15 所示,在 WcfDataService.cs 文件中,将代码注释 /* TODO: put your data source class name here */ 替换为 SAMPLEModel.SAMPLEEntities
    图 15. 数据源类名和 MyEntitySet
    MyEntitySet 已突出显示
  2. 取消注释包含 config.SetEntitySetAccessRule 的代码。将 MyEntitySet 替换为一个星号 “*”,如图 16 所示。
    图 16. 更改 WcfDataService.cs 的代码
    WcfDataService.cs - 按照上面的第 1 步和第 2 步更改代码

测试 WCF 数据服务

  1. 要运行应用程序,从 Debug 菜单中单击 Start Debugging。如果系统提示您启用调试,请单击 OK
  2. 在 Web 浏览器中,输入一个 URI,以便通过数据服务从一个 DB2 表返回所有记录。
  3. 输入 http://localhost:15452/DB2OData/WcfDataService.svc/ 查看已包含的实体,如图 17 所示。
    图 17. WcfDataService.svc
    XML 文件包含 DEPARTMENT 和 EMPLOYEE 实体
    要查看此文件的文本,请查看本文的 下载 一节中的 WcfDataService.svc.txt 文件。
  4. 输入 http://localhost:15452/DB2OData/WcfDataService.svc/DEPARTMENTs 查看 Department 表,如图 18 所示。
    图 18. Department 表
    XML 格式的 Department 表

    (参见图 18 的 大图。)

    请参阅 下载 一节,了解此图的文本。
  5. 要搜索 Employee ID = 000010,可将 http://localhost:15452/DB2OData/WcfDataService.svc/EMPLOYEEs('000010') 粘贴到 URL 中,如图 19 所示。
    图 19. Employee 表
    XML 格式的 Employee 表

    (参见图 19 的 大图。)

    请参阅 下载 一节,了解此图的文本。
  6. 可使用加载项(比如 Bamboo for Firefox)查看格式化的 XML 数据,如图 20 和图 21 所示。
    图 20. 格式化的 employee 表
    该图显示了 Employee 表中每行的数据
    图 21. 格式化的 department 表
    该图显示了 Department 表中每行的数据

结束语

本文介绍了如何使用 Microsoft Visual Studio,通过 OData 和 HTTP 公开 DB2 数据,使得从移动设备和 Web 浏览器访问 DB2 成为可能。OData 库可用于多种移动设备(请参阅 参考资料 一节了解有关的更多信息)。类似的 OData 支持可用于 Informix 和 DB2 on z/OS。

目前,无法通过 Visual Studio 支持时态和 XML 数据。


下载

描述名字大小
XML 示例UsingODataWithDB2-XML-Examples.zip2KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=836875
ArticleTitle=将 OData 用于 IBM DB2 和 Informix
publish-date=09242012