0

我有以下代码。当我执行 db2 prep file1 时它工作正常但最后没有打印出再见当我尝试使用 C 编译器将它作为 ./file1 运行时,它无法识别我在 db2 上执行此操作的 EXEC

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlutil.h>
#include <sqlenv.h>
#include <sql.h>
#include <sqlcodes.h>


EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;
  short sage;
  short sid;
  char sname[16];
EXEC SQL END DECLARE SECTION ;

#define CHECK_SQL( code, text_string, eExit)
  {
    if( rc ==0)
    printf("rc was 0\n");
    if(sqlca.sqlcode != 0)
    printf("just checked sqlca.sqlcode %s \n", sqlca.sqlcode);
    if(sqlca.sqlcode ==0)
    printf("well sqlcode is 0\n");
  }


int main(int argc, char *argv[])
  {
    if (argc>1)
      printf("we have an input\n");
    else {
      printf("please print something\n");
      exit(0);
      }

    EXEC SQL CONNECT TO NAME;
    CHECK_SQL(0, "Connect failed", EXIT);

    printf("bye\n");
}

我知道当我做 db2 准备文件时,它会创建一个 file.C,然后我需要单独编译该文件。但其中有很多链接错误。我检查了 db2 网站,它说我需要在包含的文件之间创建一个 dll。请帮忙。

4

1 回答 1

0

为 DB2 开发嵌入式 SQL 应用程序的正确顺序是:

  • 预处理(prep你提到的)。这会将嵌入式 SQL 转换为 CLI 调用。之后,您将拥有两个文件:一个 C 源代码和一个 bind ( .bnd) 文件。
  • 像往常一样编译和链接 C 源代码。显然,与其他 C 程序一样,您需要所有相关的头文件和库。这将创建一个可执行文件。
  • 将包(.bnd文件)绑定到数据库。
  • 运行可执行文件。

如果您花时间阅读我在其他问题中提到的手册,您就会知道这一切。

于 2013-07-12T14:23:11.347 回答