DB2 Magazine 中文版: 访问 iSeries 数据
当您第一次开始学习 DB2 for iSeries 时,一下子要弄清楚如何访问所有数据可能有些令人生畏。我将介绍访问 DB2 for iSeries 数据的一些常见的方法,并展示如何开始开发访问存储在 DB2 for iSeries 数据库中的数据的应用程序。
我主要讨论经常使用非 iSeries 平台的开发人员所熟悉的语言。例如,如果谁开发过 Windows 或 Linux 上的 JDBC 应用程序,那么他应该能够很快地在 iSeries 平台上编译和运行 JDBC 应用程序。如果您更喜欢看直观的例子,那么请阅读本期的在线版本,其中有一些相关的屏幕快照(www.db2mag.com)。
本期基于带最新程序临时性修改(PTF)的 V5R4。我将谈到以下接口:
- iSeries Navigator and Start SQL Interactive Session (STRSQL)
- JDBC
- Net.Data
- PHP
- ILE C and C++
运行 SQL 语句
您可以从两种简单的界面中选择一种来发出 SQL 语句:iSeries Navigator 中的 Run SQL Scripts
窗口,或者 5250 非 GUI 界面(“绿屏”界面)中的 STRSQL
命令。
iSeries Navigator。 安装 IBM iSeries Access for Windows,该产品包括 iSeries Navigator (用于从 Windows 桌面管理 iSeries 服务器的 GUI)。要了解关于该产品的更多信息,请参阅 IBM eServer iSeries Access 主页(见参考资料)。
安装好 IBM iSeries Access for Windows 之后,打开 iSeries Navigator,添加一个到 iSeries 服务器的连接,然后展开新添加的 iSeries system → Databases
,并在一个特定数据库上单击右键,启动 Run SQL Scripts
窗口。
通过 Run SQL Scripts
窗口可以创建、编辑、运行 SQL 查询以及检修 SQL 查询方面的问题。SQL Assist 工具为构建 SQL 查询提供帮助。您在其中可以输入 SQL 语句,语句之间以分号终止符隔开。要运行多条语句,只需选择 Run → All
。
如果使用的是 STRSQL,而不是 iSeries Navigator,那么就需要 DB2 Query Manager and SQL Development Kit。为了验证是否已经安装这个特许程序,可以输入 Go Licensed Program (GO LICPGM
) 命令并选择 Option 10 (Display
)。
STRSQL。可以从 5250 界面开始交互式 SQL,方法是输入 STRSQL
命令,然后按下 Enter
键。在这个界面中,可以输入整个 SQL 语句,也可以使用 F4=Prompt
来填充值,以构建完整的 SQL 语句。
创建好表,并向表中填入数据后,发出 SELECT
语句,验证数据是否已经被正确地插入到表中。
也可以在 STRSQL
命令行上输入 SQL 语句的动词,然后按下 F4=Prompt
,以提供那条语句所需的信息。例如,如果输入 INSERT
并按下F4=Prompt
,那么命令行提示您输入相关的详细信息;完成输入后,按 Enter
键。
如果输入的表名和库的详细信息是正确的,那么命令行将提示您为表中的每个列输入一个值。按下 ENTER
键后,又会回到 STRSQL 屏幕,在这个屏幕上可以看到被执行的完整的 INSERT
语句。
在继续讨论应用程序开发界面之前,让我们创建一个表,然后插入一些数据到表中。在接下来的几节中使用的示例程序将对这个表发出一个SELECT
查询。
从 STRSQL 界面发出清单 1 中所示的语句。
JDBC 接口
要使用 JDBC,需要特许程序 5722-JV1,系统 CD 附带了这个特许程序。JV1 应该预先安装好;为了验证是否已经安装该程序,可以输入 Go Licensed Program (GO LICPGM
) 命令,并选择 Option 10 (Display
)。如果在列表中没有看到这个特许程序,那么安装 5722-JV1 *BASE,并选择与您要安装的 Java Development Kit (JDK) 相匹配的选项。
为了测试 IBM Developer Kit for Java 是否安装成功,可以在 iSeries Main Menu 命令行上输入 java Hello。按下 Enter
键来运行 Hello World Java 程序。如果 IBM Developer Kit for Java 已经正确地安装,那么在 Java Shell Display 中会显示 Hello World。
您可以从两种驱动程序中选择一种来建立到 iSeries 数据库的连接:本地 JDBC 驱动程序或 Toolbox JDBC 驱动程序。经验法则是,当直接在 iSeries 服务器上运行代码时,使用本地驱动程序;而当从不同的机器远程连接到 iSeries 数据库时,则可以使用 "Toolbox" 驱动程序。
清单 2 中的源代码允许用户选择使用哪种驱动程序来建立连接。将该代码保存为 DBTest.java 文件,放在 IFS 中的一个目录下。从 iSeries 命令行执行一个 QSH
命令,接着通过 cd
命令找到 .java 文件所在位置,然后发出以下命令:
javac DBTest.java
若要运行代码并使用本地驱动程序用于连接,发出以下命令:
java DBTest DB2_APP <ipaddress_iSeries> <RDB_Name>
<userid> <password>
可以通过从 iSeries 命令行发出 WRKRDBDIRE
命令来验证 RDB_name。
清单 3 展示了一个示例输出。
如果使用的是 Toolbox 驱动程序,那么应确保环境变量 CLASSPATH
是指向位于 Integrated File System (IFS) 中的jt400.jar 文件的。您可以通过 QSH 界面设置和验证 CLASSPATH
变量的值,方法如下所示:
export CLASSPATH=:/QIBM/ProdData/HTTP/public/jt400/lib/jt400.jar
echo $CLASSPATH
若要运行代码并使用 Toolbox 驱动程序用于连接,那么可以发出以下命令:
java DBTest Toolbox <ipaddress_iSeries> <RDB_Name>
<userid> <password>
清单 4 展示了示例输出。
NET.Data 接口
您不需要安装任何软件就可以开发 Net.Data 宏。可以通过运行 GO LICPGM
命令来验证是否已经有 5722-DG1 IBM HTTP Server for i5/OS:
- 使用
CRTDIR DIR ('/NDTEST')
命令创建一个名为NDTEST
的 IFS 目录。 - 使用
CRTLIB LIB(NDTEST)
命令创建一个名为NDTEST
的库。 - 使用
CRTDUPOBJ OBJ(DB2WWW) FROMLIB(QHTTPSVR) OBJTYPE(*PGM) TOLIB(NDTEST)
命令将DB2WWW
对象从QHTTPSVR
复制到库NDTEST/DB2WWW
中。使用
EDTOBJAUT
命令确保*PUBLIC
或QTMHHTP1
用户简要表(profile)拥有程序/NDTEST/DB2WWW
的授权。 - 使用 IBM Web Administration for i5/OS 界面创建一个名为
NDTEST
的 HTTP 服务器,这个 HTTP 服务器侦听 8081。确保在 HTTP 服务器配置文件(可以通过选择Manage Servers tab → HTTP Servers tab → Tools → Edit
来编辑这个文件)中有以下条目:Listen *:8081
ScriptAlias /netdata/ /QSYS.LIB/NDTEST.LIB/DB2WWW.PGM/ndtest/
<Directory /QSYS.LIB/NDTEST.LIB/>
Order Allow,Deny
Allow From all
Options +ExecCGI
</Directory>重新启动 HTTP 服务器,以使更改生效。
- 将清单 5 中的代码复制到一个名为 TestDB2.ndm 的文件中,并将该文件通过 FTP 传输到 IFS 目录 /
NDTEST
中。然后可以使用这个 URL 调用它:http://<ipaddress of iseries server>:8081/netdata/TestDB2.ndm/input.
PHP 接口
有了 Zend Core for i5/OS 产品,现在可以在 iSeries 平台本地运行 PHP 脚本。PHP 可用于快速开发 Web 应用程序。Zend Core 使访问 DB2 for iSeries 数据和将它显示在 Web 站点上的 PHP 脚本的编写和部署变得更简单。
Zend 网站(www.zend.com)列出了安装 Zend Core for i5/OS 的步骤。安装了这个产品,并成功地登录到 Zend Core 界面之后,将以下代码复制到一个名为 DB.php 的文件中,放在 /usr/local/Zend/apache2/htdocs IFS 文件夹下。用实际的值替换脚本中 RDB_name、userid 和 password 的值。可以通过从 iSeries 命令行中发出 WRKRDBDIRE
命令来验证 RDB_name(见清单 6)。
可以从一个受支持的浏览器中,使用 URL http://<ipaddress_iSeries>:8000/DB.phpTest 调用该脚本来对它进行验证。
ILE C 和 C++ 接口
通过发出 GO LICPGM,选择 Option 10,并检查关于特许程序 5722-WDS、Options 51 和 Options 52 的输出,验证 iSeries 服务器上是否有 ILE C 和 C++ 编译器。
- 使用
CRTLIB LIB(MYLIB)
命令创建一个库。 - 使用
CRTSRCPF FILE(MYLIB/QCSRC) TEXT('Source physical')
命令创建一个源文件。 - 启动 Programming Development Manager (
STRPDM
)。选择 Option 3 (
Work with members
)。指定源文件名为QCSRC
,库为MYLIB
。按下F6 (Create)
键,输入成员名SAMP
和源类型C
。这时将出现 SEU Edit 屏幕,您可以在其中输入源代码。将清单 7 中显示的源代码输入到 SEU Edit 屏幕中。
按
F3 (Exit)
键进入Exit
屏幕。输入Y (Yes)
保存成员SAMP
。 - 发出以下命令创建程序目标文件:
CRTSQLCI OBJ(MYLIB/TESTPGM) SRCFILE(MYLIB/QCSRC) SRCMBR(SAMP) OBJTYPE(*PGM)
- 最后,使用
CALL PGM(MYLIB/TESTPGM)
命令运行该文件。
DB2 Magazine 中文版: 访问 iSeries 数据的更多相关文章
- 关于iOS10的允许访问用户数据产生的问题
不知道这个问题是什么时候出现的,直到我重写项目已应对IPv6的审核. 先前没有加引导页面,打开app直接进入主控制器.当弹出允许访问用户数据窗口的时候,主页面的数据是不加载的. 当用户未允许访问数据之 ...
- salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce
本篇参考Trail教程: https://developer.salesforce.com/trailhead/force_com_dev_intermediate/apex_integration_ ...
- 以对象的方式来访问xml数据表(三)
怎样以对象的方式来访问xml数据表? 在讲如何具体实现(二)中所说的专门用于访问xml文件的动态链接库之前,我们先来看看这个动态链接库具体要实现什么功能. 动态链接库IXmlDB.dll的功能: 1. ...
- 以对象的方式来访问xml数据表(二)
为什么要以对象的方式来访问xml数据表? 还记得,自己是在一次完成师兄布置的任务时接触到了xml,那时候需要用xml来作为数据文件,保存一个简单的图书管理系统的数据.于是就知道了,可以用xml文件来保 ...
- 以对象的方式来访问xml数据表(一)
所有实例代码都是以C#演示—— 在将如何以对象的方式来访问xml数据表之前,我们先来谈谈如何用xml文件作为数据库吧! 平时在开发一些小的应用的时候,需要一个数据库,这个时候虽然可以用SQL serv ...
- PhoneGap+jQuery Mobile+Rest 访问远程数据
最近研究Mobile Web技术.发现了一个好东西-PhoneGap! 发现用PhoneGap+jQuery Mobile是一个很完美的组合! 本实例通俗易懂.适合广大开发人群:高富帅.白富美.矮穷戳 ...
- Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据
Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据 在这一节中,你将新创建一个新的 MoviesController类,并编写代码,实现获取影片数据和使用视图模板在浏览器中展现 ...
- 《Effective C#》读书笔记-1.C# 语言习惯-1.使用属性而不是可访问的数据成员
思维导图: 大纲: 1.使用属性而不是可访问的数据成员 属性 指定不同的访问权限 隐式属性降低了声明属性的工作量 允许将数据成员作为公共接口的一部分暴露 ...
- 改善 C# 的语言习惯(一) - 使用属性而不是可访问的数据成员(整理中)
改善 C# 的语言习惯(一) - 使用属性而不是可访问的数据成员 序 为什么我们的程序运行得棒棒的,还要改呢?Why? 答:我们要让程序运行得更快,执行的效率更高,代码的可读性更强,维护的成本更低.. ...
随机推荐
- nokia5230 出厂设置
你手机sim卡里的电话没事,还有储存卡里都没事,这个只是针对手机内存,如果不放心,拿你不用的手机卡,拔了内存卡格式化你好,我来具体说说吧首先如果你要单一恢复出厂设置,代码是输入*#7780#密码没改是 ...
- 更改AD查询LDAP条目的1000限制
解除LDAP导入时的AD条目查询限制 解除LDAP导入或读取AD用户数限制问题 更改AD查询LDAP条目的1000限制 来源:http://www.jiancool.com/article/55373 ...
- nginx 出现 13: Permission denied
原文地址:http://www.nginx.cn/695.html 前段时间把程序员的wordpress升级到3.5.1,本身如果没有特别的插件,在后台更新就能完成. 更新完成后在后台发布文章,编辑器 ...
- linux系统中实现mongodb3.0.5数据库自动备份
最近两天,因公司业务需要,要定期备份mongodb数据库中的数据. 查了很多资料后,发现mongodb似乎并没有自带的定时备份功能,于是只好转移目标到linux系统的定时任务上,于是学习并使用了cro ...
- 通过 HTTP 头进行 SQL 注入
在漏洞评估和渗透测试中,确定目标应用程序的输入向量是第一步.有时,当做web应用程序测试时,SQL注入漏洞的测试用例通常局限于特殊的输入向量GET和POST变量.那么对于其他的HTTP头部参数呢?难道 ...
- 两个Python web框架:Django & Tornado比较
就是说它作为 web 框架比 Django 简单,又支援异步 IO,且更不需要前端的 webserver ? 我已经混乱了, Tornado是 Nginx.Django.Node.js 的结合体?又或 ...
- 30天轻松学习javaweb_https协议的密码学
https通过非对称加密实现数据安全1.CA机构提供数字证书,其中数字证书包含公钥.2.浏览器自带功能验证数字证书是否是CA机构颁发的.3.根据数字证书包含的公钥对表单数据进行加密.4.公钥提供方再根 ...
- Rstudio匹配中文
之前在操作csv文件时一般是将中文字符在excel或用Perl将其中的中文转换成对应的英文,但是最近碰到不得不在R里面进行中文符操作,发现R里面的匹配是无法识别的中文符的.比如: df <- r ...
- 修改VNC访问的密码
:vncserver :iptables -I INPUT -p tcp --dport -j ACCEPT 客户端方式 :iptables -I INPUT -p tcp --dport -j AC ...
- 使用bs4对海投网内容信息进行提取并存入mongodb数据库
example: http://xyzp.haitou.cc/article/722427.html 首先是直接下载好每个页面,可以使用 os.system( "wget " ...