- 论坛徽章:
- 0
|
是在ubuntu上执行一个简单的连接数据库sqc文件问题
这是我的sqc代码:- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- EXEC SQL INCLUDE SQLCA;
- EXEC SQL BEGIN DECLARE SECTION;
- char dbcaDBName[25];
- char dbcaDBUser[25];
- char dbcaDBPwd[25];
- EXEC SQL END DECLARE SECTION;
- int main(int argc, char *argv[])
- {
- memset(dbcaDBName, 0, sizeof(dbcaDBName));
- memset(dbcaDBUser, 0, sizeof(dbcaDBUser));
- memset(dbcaDBPwd, 0, sizeof(dbcaDBPwd));
- if (getenv("DBNAME") == NULL)
- {
- printf("dbname error\n");
- return -1;
- }
- else
- printf("dbname=[%s]\n", getenv("DBNAME"));
- memcpy(dbcaDBName, getenv("DBNAME"),sizeof(dbcaDBName)-1);
- if (getenv("DBUSER") != NULL)
- {
- memcpy(dbcaDBUser, getenv("DBUSER"),sizeof(dbcaDBUser)-1);
- if(getenv("DBPWD") != NULL)
- {
- memcpy(dbcaDBPwd, getenv("DBPWD"),sizeof(dbcaDBPwd)-1);
- }
- }
- EXEC SQL connect to :dbcaDBName user :dbcaDBUser using :dbcaDBPwd;
- printf("connect sqlcode=[%d]\n", sqlca.sqlcode);
- return 0;
- }
复制代码 以下是我的makefile:- CC=cc
- DBNAME=topcbos
- INCDIR=/home/db2inst1/sqllib/include
- BINDIR=~machao/TEST
- BNDDIR=$(HOME)/bnd
- LIBDIR=/home/db2inst1/sqllib/lib
- CFLAGS=-I$(INCDIR) -s
- LFLAGS=-L$(LIBDIR) -ldb2
- test=test.o
- all:test clear
- test:$(test)
- $(CC) -O $(LFLAGS) $(test) -o $@
- .SUFFIXES:.sqc
- .sqc.o:
- db2 connect to $(DBNAME) user topcbos using topcbos
- db2 prep $< bindfile
- db2 bind $(BINDDIR)/$*.bnd;
- $(CC) -g -c -O $(CFLAGS) $*.c
- clear:
- -rm *.o
复制代码 执行结果是能正确打出环境变量的数据库名,但sqlcode是-804
即使把代码中的连接语句写成 EXEC SQL connect to dbname user dbuser using dbpwd; 也是同样的报错
求解,谢谢了 |
|