首页 > 范文大全 > 正文

ODBC在AS/400中的应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇ODBC在AS/400中的应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

AS/400是一种性能很高的小型机,但是它的扩展性能并不理想,对于那些数据交换量不是很大或大数据量的交易比较集中的应用系统,我们可以采用odbc来实现对数据库的访问。

ODBC即Open Database Connectivity,是由微软公司提出的一个用于访问数据库的统一界面标准,它定义并创建了一组规范,提供了关于数据库访问的标准API。这些API是基于结构式查询语言SQL来完成对数据库的插入、删除、更改、查询等操作的。其实对于绝大多数应用系统而言,以上的操作已经足够。ODBC的最大优点是不论何种数据库系统,它都是以自己的标准风格去处理。也就是说,对于SQL Server、Oracle、Informix、FoxPro、ACCESS、DB2等都可以通过调用标准API接口来实现数据操作,从而使基于ODBC的应用程序独立于DBMS。这样,运用一种编程语言编写各类数据库程序成为现实,另外也方便数据移植。

ODBC组件及作用

ODBC管理器。该程序位于Windows控制面板的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和配置、定义、管理数据源。

驱动程序管理器。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。

ODBC API。

ODBC 驱动程序。它是一些DLL,由数据库厂商提供的ODBC和数据库之间的接口。

数据源(DSN)。数据源包含了数据库位置、数据库类型、操作属性等信息,实际上是一种数据连接的抽象。有文件DSN、系统DSN和用户DSN。

应用程序要访问一个数据库的资源,首先必须由ODBC管理器来定义一个对应的数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,还有访问数据库的用户名和密码,建立起ODBC与具体数据库的联系链接。这样,应用程序只要将数据源名提交给ODBC,ODBC就能建立起与相应数据库的链接。在ODBC中,ODBC API是一组接口标准,各数据库厂商的ODBC驱动程序要遵循此标准,所以ODBC API通常不能直接访问数据库,必须通过驱动程序管理器与数据库进行信息交换。驱动程序管理器负责将应用程序对ODBC API的调用转递给对应的驱动程序,驱动程序执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。

ODBC 在 DB2 FOR AS/400 上的应用

1.驱动程序类型

运行在AS/400 上的DB2 通过RPG访问的话,其执行效率非常高,但是 RPG 的用户界面并不理想,RPG 编程语言也不通用。我们采用了微软.NET 来实现业务系统,因此只能通过 ODBC 或 OLEDB 来访问 DB2,我们选择了前者。DB2 FOR AS/400 的ODBC 驱动程序有两种:微软提供的DB2 DRIVER 和 IBM 的 CLIENT/ACCESS安装包自带的ODBC 驱动。调试结果显示后者的性能更好些。当CLIENT/ACCESS 安装完毕后 ODBC 管理器的驱动程序栏中能看到Client Access ODBC Driver 和 iSeries Access ODBC Driver 两种驱动,运用任何一个都能达到我们的目的。

2.数据源配置及调用

打开控制面板进入管理工具可以看到“数据源(ODBC)”,点击进入;通常选用系统DSN。点击“添加”按钮,此时会出现一个驱动列表,双击 iSeries Access ODBC Driver进入 “iSeries Access Windows 版 ODBC 设置”面板。输入数据源名。进入“服务器”选项,命名约定选择系统命名约定(*SYS)选项。库列表项输入*USRLIBL,这个选项很重要,只有这样才能访问到AS/400用户库列表中的数据库,从而,达到相应用户只访问自己数据库的目的。按“确定”按钮,数据源配置完毕。但是,我们还需要启用连接池来提高数据库访问效率。选择“连接池”选项,找到iSeries Access ODBC Driver 双击,选中使用连接池选项后确定,连接池启用完毕,不过需要重新启动机器才能生效。在 .NET下通过以下代码即可访问AS/400的DB2数据库:

String dbstr="DSN=DB2DSN;UID=’’;password=’’"

System.Data.Odbc.OdbcConnection dbconnect =

new System.Data.Odbc.OdbcConnection(dbstr);

dbconnect.Open();

System.Data.Odbc.OdbcCommand cmd = new System.Data.Odbc.OdbcCommand();

System.Data.Odbc.OdbcDataAdapter dp =

new System.Data.Odbc.OdbcDataAdapter();

System.Data.DataSet dbset= new System.Data.DataSet();

mandText ="SELECT * from test ";

cmd.Connection = dbconnect;

dp.SelectCommand = cmd;

dp.Fill(dbset);

3.存储过程

通过ODBC来访问数据库的主要优点是无需预编译、界面友好、数据移植性好。但是,效率不高,尤其是一些批量业务,由于数据交换量很大,业务响应就比较慢,难以达到用户的要求。在此我们可以编写存储过程来解决问题。AS/400环境下可以用C语言或RPG编写,RPG命令要比SQL语句的执行效率好。我们通常采用RPG来处理批量业务,例如日终处理等。在 .NET 下可以通过以下代码进行存储过程的调用。设存储过程名为AAA,放在OBJLIB 下。

sql=@"CREATE PROCEDURE OBJLIB/AAA(

in JGH CHAR(6) ,

out Message CHAR(60))

EXTERNAL NAME A4OBJLIBH/GJ_JSTZ

LANGUAGE RPGLE

GENERAL ";

myBase.ExecNoSelect(sql);

strResult=myBase.ExecStored("CALL OBJLIB/AAA(?,?)",arrayPara)[0].ToString().Trim();

参数前 in 代表输入参数,out 代表输出参数,arrayPara是一个已赋值的变量数组。其实就是通过ODBC调用了AS/400上的一个程序来执行相应的功能,这样就实现了执行速度与界面友好的完美统一。但是,这是以降低移植性能为代价的。