AS/400开发经验点滴(三)--如何使用分布式关系数据库
AS/400开发经验点滴(三)
五.如何使用分布式关系数据库
我们可以在AS/400系统中使用STRSQL命令来交互执行SQL语句。如果AS/400系统中没有安装交互式SQL工具,那么我们便不能使用SQL语句进行交互式查询等操作。假设有一群连网的AS/400,其中只有一台安装了交互式SQL工具,那么我们能不能只通过这台AS/400的交互SQL工具去对其他没有安装SQL交互工具机器的数据库进行操作呢?答案是肯定的,这就需要使用分布式关系数据库。
分布式数据库管理是AS/400系统提供的一个重要功能之一,其功能比较强大,在本文里只能根据作者经验对分布式关系数据库的使用作简单介绍,根据这个简单介绍,你就可以很容易体验分布式关系数据库的使用。
要使用分布式关系数据库,首先需要创建关系数据库目录,即Relational Database Diretory。用WRKRDBDIRE可以查看关系数据库目录,其界面如下:
[code:1:77907562ca]
Work with Relational Database Directory Entries
Position to . . . . . .
Type options, press Enter.
1=Add 2=Change 4=Remove 5=Display details 6=Print details
Relational Remote
Option Database Location Text
- PRODUCT PRODUCT
- BACKUP *LOCAL[/code:1:77907562ca]该示例显示在BACKUP机器上已经创建了PRODUCT和BACKUP两个Relational Database Directory Entry。对应界面操作选择项命令则分别是ADDRDBDIRE、CHGRDBDIRE、RMVRDBDIRE、DSPRDBDIRE。
用ADDRDBDIRE命令可以增加新的Relational Database Directory Entry。这个命令里有两个必填项(其他项可以使用缺省),RDB项是取一个关系数据库的名称,通常选择与机器系统名一致的名称,RMTLOCNAME是给定对方地址名称,如果是定义本地关系数据库,则此项填*LOCAL。如果是定义远程机器数据库,在RMTLOCNAME项实际上要填两个域,先确定通信类型,可选项是*SNA和*IP,分别表示使用SNA协议或TCP/IP协议通信。如果TYPE选择*SNA,则Name or address里需填远程机器location name,这个location name可以在远程机器上执行DSPNETA命令查到。如果TYPE选择*IP,则Name or address可以直接填IP地址。
[code:1:77907562ca] Add RDB Directory Entry (ADDRDBDIRE)
Type choices, press Enter.
Relational database . . . . . PRODUCT
Remote location:
Name or address . . . . . PRODUCT Name, *LOCAL, *ARDPGM
Type . . . . . . . . . . . . . *SNA *SNA, *IP
Text . . . . . . . . . . . . . . *BLANK [/code:1:77907562ca]
关系数据库目录创建好后,我们就可以在STRSQL命令里连接不同的关系数据库。
用CONNECT TO语句可以第一次连接关系数据库,比如在BACKUP机器上在STRSQL界面里执行CONNECT TO PRODUCT,那么我们就在BACKUP机器上连接上了PRODUCT机器上的数据库,接下来任何SQL语句操作都是对PRODUCT机器上数据库操作,再执行CONNECT TO BACKUP,那么又回到本地数据库操作。
如果BACKUP和PRODUCT关系数据库已经连接,那么不能再使用CONNECT TO语句切换连接,切换连接的命令则是SET CONNECTION,比如我们要重新切换到PRODUCT连接,则执行SQL语句:SET CONNECTION PRODUCT。
如果我们要关闭关系数据库连接,则可以使用SQL语句DISCONNECT,比如执行DISCONNECT PRODUCT就关闭了PRODUCT的关系数据库连接。如果在使用STRSQL的时候,你启动了事务机制,那么DISCONNECT就不再起作用了,这时候如果要关闭关系数据库连接,需要使用RELEASE语句,比如RELEASE PRODUCT,注意在RELEASE之后,还必须再执行COMMIT或ROLLBACK语句才能彻底关闭关系数据库连接。
综上,与关系数据库操作有关的SQL语句为下面四条:
[list:77907562ca]CONNECT TO
SET CONNECTION
DISCONNECT
RELEASE[/list:u:77907562ca]
| yokel 回复于:2003-12-25 08:29:07 |
| 谢谢!!! |
| xuguopeng 回复于:2003-12-25 08:47:51 |
| 好 UP~ |
| wildfish 回复于:2003-12-25 10:44:51 |
| 老大,嗯,不错,我们都喜欢 |
| yj2yq 回复于:2003-12-25 10:55:06 |
| 顶顶,再顶顶! |
| kevingao 回复于:2003-12-25 11:47:26 |
| UP |
| blogliou 回复于:2003-12-25 15:34:38 |
| 六.如何利用分布式关系数据库进行分布式编程
我们不仅可以使用STRSQL进行关系数据库的交互操作,还可以用关系数据库的SQL语句进行分布式编程,即我们可以在一台机器的程序里连接另一台机器的关系数据库,从而通过程序实现对另一台机器的数据库操作,这就是分布式数据库编程。 下面以ILE RPG程序为例,说明如何进行分布式编程。因为在程序中要使用SQL语句,所以程序类型(或扩展名)是SQLRPGLE。因为在程序中,需要先连接关系数据库,才能打开数据库文件,所以在F行规范定义中,不能使用隐含打开方式,需要指定USROPN关键词来显式打开文件。如下例TESTPF文件就是另一台机器上的文件: FTESTPF IF E K DISK USROPN 连接关系数据库方式如下: C/EXEC SQL C+ CONNECT TO :RDBNAM C/END-EXEC 如果关系数据库连接已经建立,则返回错误码-842,可以判断此错误码,重新SET一次关系数据库连接: C SQLCOD IFEQ -842 C/EXEC SQL C+ SET CONNECTION :RDBNAM C/END-EXEC C ENDIF 关系数据库连接建好后,我们就可以显示打开另一台机器的文件TESTPF了: C OPEN TESTPF 之后就可以对TESTPF进行各种数据库操作了。 要退出程序时,需要关闭数据库连接: C/EXEC SQL C+ DISCONNECT :RDBNAM C/END-EXEC 如果程序中使用了事务处理机制,需要用RELEASE关闭连接: C/EXEC SQL C+ RELEASE :RDBNAM C/END-EXEC C…. C/EXEC SQL COMMIT C/END-EXEC 这样子分布式程序就写好可以编译了。分布式程序要正常工作,还需要SQL Package来支持!OS/400系统支持一种叫SQL Package的目标,其目标类型是*SQLPKG。SQL Package包含有分布式程序运行时处理SQL语句的控制和访问计划。建立SQL Package有两种方法,一种方法是在编译分布式程序时,在Relational database(RDB)选择项里填写远程机器的关系数据库名,那么编译器会自动创建一个名字与程序名一样但类型为*SQLPKG的目标。另一种方法是用CRTSQLPKG命令手工创建SQL Package: Create SQL Package (CRTSQLPKG) Type choices, press Enter. Program . . . . . . . . . . . . Name Library . . . . . . . . . . . *LIBL Name, *LIBL, *CURLIB Relational database . . . . . . *PGM RDB user . . . . . . . . . . . . *CURRENT Name, *CURRENT RDB user password . . . . . . . Character value, *NONE, Default Collection . . . . . . . *PGM Name, *PGM, *NONE Object type . . . . . . . . . . *PGM *PGM, *SRVPGM Module list . . . . . . . . . . *ALL Character value, *ALL + for more values Text description . . . . . . . *PGMTXT 在Program选项里填写上面编译后的分布式程序名,在Relational database选项里填写已经定义的另一台机器的关系数据库名。 我们在实际运行分布式程序前,可以根据配置关系数据库名称,用DELSQLPKG删除原来的SQL Package,用CRTSQLPKG重新创建一个新的SQL Package。有了SQL Packge支持,分布式程序就可以正常运行了。 |
| qingzhou 回复于:2003-12-25 17:15:40 |
| 顶!!!
辛苦了!!! |
| fairyboy 回复于:2004-12-01 08:05:09 |
| 哈,楼主真厉害,加油! |
| Red_Crow 回复于:2004-12-01 08:53:11 |
| 支持,加油。 |
| ╰●-●╯ 回复于:2004-12-01 09:20:08 |
| Its Good !! |
| thursday 回复于:2004-12-01 09:43:35 |
| 收藏,帮顶! |
| thursday 回复于:2004-12-01 09:43:35 |
| 收藏,帮顶! |
最热门文章推荐:
>· 家庭无线局域网
>· 什么是无线局域网
>· 无线局域网的标准
>· 无线宽带局域网
>· 信息安全论坛
>· 信息安全标准
>· rsa信息安全公司
>· 注册组件
下一篇:INZTAP的参数问题
↓相关文章:
- · INZTAP的参数问题
- · AS/400开发经验点滴(四)--如何在程序中获取系统状态信息
- · 异常IPL的原因归纳
- · 关于文件的 ShareODP 和 USROPN
- · 请教各位:如何查看是谁删除了Library?
- · 除去字符串中任何不需要的东东的思路,仅供参考!!!!!
- · 查看as400下全部USER的几种方法:
- · Fun With Dates In RPGLE
- · as400 I/O 错误小结
- · 我想用ORACLE取AS400的数据,有没有与这个类似的培训!
- · 400中显示在线用户操作记录的方法(用User Space API 实现)
- · 在rpg 里如何对开关进行重命名?
- · AS400 上部署 J2EE 的另一选择-- JBOSS !
- · 问个关于系统MSG的问题?
- · The OS400 Command interface is EXCELLENT, but coukd be impro
- · 帮忙解释安全文档里的一句话
- · 定时启用禁用用户登陆系统的方法
- · 如何更改logon on screen?
- · 跟踪IPL全程、并将产生的spoolfile转成PC上的文本文件,一气呵成.
- · AS400上的FTP可以限制那些用户不能登陆吗?
- · 如何從 AS/400 啟動 PC 程序或 從 PC 啟動 AS/400 程序?
- · 得到4位表示 年份 的新方法?
- · V5R3 CL Programming
- · 原创:建立QINTER外可用于交互式访问的独立子系统
- · hanyu看过来,24小时交易的AS/400如何备份?
- · 磁带放进去就弹不出来三个指示灯一会全亮着
- · 【探讨】如何使用Notes与其它关系数据库进行信息交互?
- · 【探讨】如何限制Notes用户邮箱大小?
- · Some info on AS/400 V5R3
- · iSeries课程学习导航图,给您指引学习或者培训方向。
- · 很菜的问题
- · 关于数据库文件的UC控制的问题
- · 转 Commit/Rollback概念
- · 有倒序排列的KEY值时的SETLL和SETGT
- · 大家帮忙来找茬(到底RPG程序错在哪?)
- · 讨论:关于创建obj时的参数--share
- · 帮忙看看这段程序的问题出在哪里?
- · 《最后100天的AS400学习心情笔记》
- · 在一个PF中加一字段,用来表示记录的序号!
- · SLR60磁带机可以做200GB系统的全系统备份,何故?
- · 讨论系统设备的异动监控
- · 求助:存储过程的查找和COPY
- · 【步骤】使用SQL DTS功能实现从DB/2向SQL Server传输数据.
- · 请教:如何修改PF文件的CCSID值?
- · 关于触发器的初级问题,请用过的大虾指教
- · 如何使用FTP在PC和AS/400之间传输包含中文的文件
- · 各位前辈,小女子是400初学之初学
- · (原)在as400上更换硬盘
- · pcom各种版本的问题总结
- · (如何在iSeries(AS/400)將资料加密(ZT)
- · 急等 如何更改as/400 V4R5 如何更改IP地址
- · 通过Navigator配置实现PC端拨号登陆远程AS/400.
- · 高版本安全数据向低版本系统迁移问题
- · as400与windows如何互相传送文件
- · 【分享】如何实现直接从AS/400发送信息到指定的邮箱.
- · rpg的小问题谁能解决一下,先谢了!(新手)
- · CA连接不上,PCOMM正常使用,授权及网络正常。什么问题?
- · exfmt与write的区别
- · 在TCPIP基础上建立APPC连接
- · 硬盘利用率的问题
- · 如何利用RPG,CL和ACCESS制作一个条形码标签的打印程序?
- · domino的邮件问题 急! (居士快进)
- · 请教400上的文件问题
- · 如何用PC超级终端对RS6000完成控制及安装(希望是我的精品)
- · (原创) 7133-T40阵列故障解决实例
- · 又来临时抱佛脚了,请教s7a电源问题
- · 经验交流<如何在AIX下面更改before login banner>
- · 刚完成的一个hacmp 5.1 +db2 udb 8.1 ese环境下的HA配置!
- · [原创]SNORT&ACID install on AIX 5.2
- · 一光纤卡的问题的解决,有类似问题的可以参考
- · 使用SFU实现Windows和AIX文件共享-请求加精
- · ORACLE/RAC安装完全攻略
- · Step bye Step for Install the Domino server 7 on aix 5L 5.2
- · 199学习笔记(chap11)
- · 在cp时的怪问题
- · 一个系统频繁宕机(888 102 300 0C0)的案例分析与解决!!!
- · 个人总结-理解和使用aix的日志系统
- · VIO配置1
- · IY19375补丁打不上。-_-!!!
- · 老的文章不一定就没有用处了:)

