执行初始化了DB2环境的Cygwin 点击桌面上的cygwin图标,可以进入Cygwin模拟的Linux.. 现在,该环境不能执行DB2命令,因为没有作db2cmd初始化环境。 为了能在该环境中使用DB2,必须先运行db2cmd然后在DB2的命令行环境下进入Cygwin测试,是否能在Cygwin环境下使用DB2命令。OK,到目前为止,我们已经拥有了一个和Unix一样的环境,并且能使用DB2下一步我们来写第一个SQC程序. 编写SQC程序 编写一个简单程序测试,该程序主要完成,读取系统时间,并打印。程序主要部分为: if (ConnectDatabase(sDBName,sUserName,sPasswd)<0) /*连接数据库*/ { printf("连接数据库失败\n"); return -1; } printf("连接数据库成功!\n"); EXEC SQL SELECT char(CURRENT TIMESTAMP) into :sDateTime FROM (VALUES 1) AS A; if DataError { DisConnectDB(); return -1; } printf("当前时间%s\n",sDateTime); DisConnectDB(); (完整程序建附件)该程序在Unix主机下能编译执行。前面说过,建立这个环境的主要意义在于方便代码移植。所以,代码本身不用作任何更改即可在Cygwin环境下编译。修改编译参数 安装过程中已经说明Cygwin环境下,支持大部分Unix/Linux命令并且安装了Gcc的编译器,Windows平台和Unix平台下的库略有不同,gcc和我们在Windows下常用的VC编译器参数也略有不同,下面简要说明。1、 在Unix环境中,分为静态库和动态库,它们的扩展名分别是 .a 和 .so .2、 在Windows中,静态库扩展名为 .lib 动态库扩展名为 .dll3、 Unix下,SQC程序编译时必须链接 libdb2.so库,也就是加上 -ldb2参数(忽略lib和扩展名,这是Unix下C编译器特点)4、 Windows下,SQC程序必须链接db2api.lib静态库。虽然有上述不同,但是我们的修改却非常少,本例中使用了以前我为编译SQC写的Makefile模板。在Makefile中真正需要修改的只有一行将LIBS= -L$(DB2PATH)/lib -l$(DB2PATH)/lib/db2修改为LIBS= -L $(DB2PATH)/lib $(DB2PATH)/lib/db2api.lib当然,你还需要更具环境的不同,修改Makefile的其他部分,比如DB2PATH的值啊,这些就是在不同的主机上也需要修改的,并不是Windows和Unix的区别,不在本文的讨论之列。 运行测试程序Cy
9
7
3
1
2
3
4
5
4
8
: