db2 catalog db sample at node mynode
db2 terminate
请参阅该系列文章的 第 1 部分 以获得连通性设置的详细指导。 第二部分:将数据库注册为 ODBC 数据源 检查先前是否已经注册过 DB2 UDB 数据库,用以下命令列举现有数据源:
db2 list system odbc data sources
发出以下命令将 DB2 UDB 数据库‘注册’为 ODBC 数据源:
db2 catalog system odbc data source sample
如果在前一命令中出了错,您可以按如下方法删除该条目:
db2 uncatalog system odbc data source sample
在 Windows 2000 平台中,您还可以通过进入 Control Panel -> Administrative Tools -> Data Sources(ODBC)来执行以上任务。
在 UNIX 和 Linux 平台中,有些条目在文件 .odbc.ini(如果是在 Linux 中,则为 odbc.ini)是必需的,而在其他配置文件中则是可选的。例如,在 Linux 环境中使用 unixODBC 驱动程序管理器,文件 odbc.ini 中有以下条目就足够了:
[sample]
Driver = /opt/IBM/db2/V8.1/lib/libdb2.so
环境变量 ODBCINI 也应被设置为文件 odbc.ini 的完整路径。例如:
export ODBCINI=/etc/odbc.ini
由于 UNIX 平台之间存在细微差别,所以我们将在本文中介绍所有情况。关于详细信息,请参阅 DB2 Connect EE Quick Beginnings Manual。
第三部分:编译并链接 ODBC 程序 在 Windows 中使用 MS Visual Studio 6:- cl -Zi -Od -c -W2 -DWIN32 dbconn_ODBC_CLI.c
- link -debug -out:dbconn_ODBC_CLI.exe dbconn_ODBC_CLI.obj odbc32.lib
list db directory 获得。见 图 2),并且能够进行连接。 * 注意事项: - DB2 运行时客户机足以运行这个 ODBC 程序。
- 应确保已正确设置了环境变量(请参阅 表 1中的实例)。
dbconn_ODBC_CLI sample db2admin mypsw
- 该示例程序被设计为按此次序获取 3 个参数:<数据库名> <用户 ID> <密码>
- ‘Sample’是此客户端机器上的 catalog db 命令中为数据库名指定的别名。默认情况下,如果没有在该命令中指定别名,那么数据库名就相当于别名。
程序 dbconn_ODBC_CLI.c 的输出如图 3 所示。对于该场景中,此图中惟一的不同之处就是在该场景中是使用批处理程序‘bldappODBC.bat’而非‘bldappCLI.bat’来编译程序的。
场景 3 - 使用嵌入式 SQL 和宿主语言 C 连接 DB2 UDB 数据库(任何平台)
嵌入式 SQL 并不意味着是静态 SQL。嵌入式 SQL 可以包含动态或静态 SQL,这取决于 SQL 语句中的所有情况在运行之前是否是已知的。下面的实例显示了一个静态的嵌入式 SQL 的程序,这样更易于编码。本文的重点是连通性,因此我们不会进一步讨论静态与动态 SQL 之间的差别。
图 6. 从 DB2 UDB for Linux、UNIX 和 Windows 嵌入式 SQL C 应用程序客户机连接到 DB2 UDB 服务器(任何平台)清单 2 提供了嵌入式 SQL C 示例程序 dbconn_embed.sqc。
清单 2. dbconn_embed.sqc
//***************************************************************** // SOURCE FILE NAME: dbconn_embed.sqc //***************************************************************** #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sqlenv.h> #include <sqlca.h> int main(int argc, char** argv) { EXEC SQL INCLUDE SQLCA; EXEC SQL BEGIN DECLARE SECTION; char dbname[15] ; char user[128 + 1] ; char pswd[15] ; char mycolout[2] ; EXEC SQL END DECLARE SECTION; if (argc < 4) { printf ("Usage: dbconn_embed <database name> <userid> <password>\\n"); exit (0); } strcpy (dbname, argv[1]); strcpy (user, argv[2]); strcpy (pswd, argv[3]); /* connect to a database */ EXEC SQL CONNECT TO :dbname USER :user USING :pswd; if (SQLCODE != 0) { printf ("\\n *** Error ***\\n"); exit (0); } else { printf ("\\n Successful connection to '%s' db using C embedded static SQL\\n",dbname); } EXEC SQL SELECT IBMREQD INTO :mycolout FROM SYSIBM.SYSDUMMY1; printf(" Successful retrieval of record. Column 'IBMREQD' has a value of '%s'\\n",mycolout); /* Disconnect from a database */ EXEC SQL CONNECT RESET; printf (" Successful Disconnection from database '%s'\\n",dbname); printf (" End of Program\\n"); return 0; } /* end main */
表 4. 从 DB2 UDB for Linux、UNIX 和 Windows 嵌入式 SQL C 客户机应用程序连接到 DB2 UDB 服务器(任何平台)
Machine 1(‘myblue’)DB2 UDB for Linux、UNIX 和 Windows Machine 2(‘aries’)DB2 UDB 服务器(任何平台) 在这台机器上运行下列命令: 您需要从这台机器上获取下列信息,以便在 machine 1 上执行命令: 第一部分:配置连通性






