设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源平台

在Windows环境下使用Cygwin中的gcc编译器实现DB2的嵌入SQL编程

来源本站整理 作者:佚名 时间:2006-4-9 14:39:59 该文得分0

  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
预编译时由预编译器生成的时间戳记与绑定时存在的包内的时间戳记不同

附录1
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);
}
   

相关文章
广告赞助
网友评论

共有 0 位网友发表了评论,平均得分: 0 查看完整内容

用户名:

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

(注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码