Chinaunix

标题: 为什么连接不上数据库 [打印本页]

作者: feelingtel    时间: 2004-04-28 11:05
标题: 为什么连接不上数据库
在SYBASE的嵌C中, 有这样一段代码.
      数据库用户:apdbo; 密码:apdbop, 我建了一个简单的表,
create table a ( amt char(10) ),表里有一条记录, “1234567890”, 程序执行到子进程
里的CONNECT就不往下走了。 你看看这个程序有什么问题。

#include <sybtesql.h>;
#include <ctpublic.h>;
#include <stdlib.h>;
#include <stdio.h>;
#include <signal.h>;

EXEC SQL INCLUDE sqlca;

InitSysPara();

main()
{

  EXEC SQL BEGIN DECLARE SECTION;
     char sAmt[30], username[30],passwd[30];
     int iAmt= 0;
  EXEC SQL END DECLARE SECTION;
  int i;


  EXEC SQL WHENEVER SQLERROR CONTINUE;
  EXEC SQL WHENEVER SQLWARNING CONTINUE;
  EXEC SQL WHENEVER NOT FOUND CONTINUE;

  signal(SIGCLD, SIG_IGN);

   EXEC SQL CONNECT "apdbo" IDENTIFIED BY "apdbop";
   InitSysPara();
   EXEC SQL DISCONNECT ALL;

   if ( fork() == 0 ) {

        fprintf(stdout, "!!!!! [%d]\n",__LINE__);
        EXEC SQL CONNECT "apdbo" IDENTIFIED BY "apdbop";
        fprintf(stdout, "!!!!! [%d]\n",__LINE__);
        EXEC SQL select amt into :sAmt from a;
        if (sqlca.sqlcode != 0 )
        {
           fprintf(stderr, "sqlcode=[%d]  [%s] [%d] lines [%ld]\n", sqlca.sqlcoe, sqlca.sqlerrm.sqlerrmc, __LINE__, sqlca.sqlerrm.sqlerrml);
           EXEC SQL DISCONNECT ALL;
           exit(1);
        }
        fprintf(stdout, "AMT=[%s]\n", sAmt);

        EXEC SQL DISCONNECT ALL;
        fprintf(stdout, "SQLCODE=[%d],MSG=[%s]\n",sqlca.sqlcode,sqlca.sqlerrm.sql
errmc);
        exit(1);
    }
    return 1;
}

InitSysPara()
{
}




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2