Windows下使用C语言+嵌入SQL实现DB2开发
Cygwin,gcc的介绍和安装在前面的文章有将过,请参考
在Windows中使用Cygwin环境下的gcc编译器编译Informix ESQ/C程序
对于DB2的嵌入SQL程序,有以下步骤:
1)编写dbconn.sqc程序(一个简单的连接数据库,查询并显示的例子)
2)在Cygwin命令行中键入 db2cmd 启动一个新的db2命令行窗口
在db2命令行窗口中:
3)预编译
db2 prep dbconn.sqc
生成dbconn.c文件
4)编译
gcc -I"C:\Program Files\IBM\SQLLIB\include" dbconn.c "C:\Program Files\IBM\SQLLIB\lib\db2api.lib"
生成a.exe文件
在<在Windows中使用Cygwin环境下的gcc编译器编译Informix ESQ/C程序>文章中提到在使用gcc编译时如果路径中包含空格的路径,就不能正确解析。
这次发现可以将路径用双引号引起来就可以了。
5)执行a.exe,成功
如果需要生成外部绑定文件,(db2执行预编译时默认是做绑定了)
1)db2 prep dbconn.sqc bindfile
生成
dbconn.c, dbconn.bnd
2)手工绑定
db2 bind dbconn.bnd
3)绑定完后一定要重新编译,否则报-818,
db2 ? SQL0818
预编译时由预编译器生成的时间戳记与绑定时存在的包内的时间戳记不同
dbconn.sqc程序
#include <stdio.h>
#include <string.h>
#include <sql.h>
int main()
{
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
char firstnme[12+1];
EXEC SQL END DECLARE SECTION;
long RetCode = SQL_RC_OK;
char ErrorMsg[1024];
EXEC SQL CONNECT TO sample USER zhangjij USING happyday;
EXEC SQL SELECT firstnme INTO :firstnme FROM employee WHERE empno='000099';
if (sqlca.sqlcode != SQL_RC_OK)
{
RetCode = sqlaintp(ErrorMsg, sizeof(ErrorMsg), 70, &sqlca);
switch (RetCode)
{
case -1:
printf("ERROR: Insufficient memory.\n");
break;
case -3:
printf("ERROR: Message file is inaccessible.\n");
break;
case -5:
printf("ERROR: Invalid SQLCA, bad buffer, or bad buffer length specified.\n");
break;
default:
printf("sqlca.sqlcode=[%ld], Message= [%s] \n", sqlca.sqlcode, ErrorMsg);
break;
}
}
printf("OK = [%s] \n", firstnme);
EXEC SQL DISCONNECT CURRENT;
return(0);
}
浏览URL http://www.qqread.com/db2/e082993405.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Windows操作系统安装 (15501篇文章)
- Windows权限设置 (10139篇文章)
- DB2 (422篇文章)
- DB2中的数据处理 (468篇文章)
- Windows操作系统安全集 (18516篇文章)
- Java编程开发手册 (8276篇文章)
- Windows频道 (9714篇文章)
- 验证DB2数据库备份是否成功 (21次浏览)
- nb思科交换机常用命令 (16次浏览)
- 实时数据管理的挑战和eXtremeDB实时数据库 (2次浏览)
- 在WebLogic集群环境中使用DB2 Alphablox (0次浏览)
- Oracle与DB2、MySQL取前10条记录的对比 (0次浏览)



