一、编辑包含sql代码的源码文件static.sqc
#include <stdio.h>
#include <string.h>
#include <sql.h>
int main()
{
printf("nnthis is a test programming !nn");
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
char employeeNO[7];
char lastName[16];
double salary;
short salaryNI;
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO sample user db2inst1 using panpan;
EXEC SQL DECLARE cursor1 CURSOR for
select empno,
lastname,
double(salary)
from db2inst1.employee
where job = 'DESIGNER';
EXEC SQL OPEN cursor1;
while(sqlca.sqlcode == SQL_RC_OK)
{
EXEC SQL FETCH cursor1
into :employeeNO,
:lastName,
:salary :salaryNI;
if (sqlca.sqlcode == SQL_RC_OK)
{
printf("%-8s %-16s ",employeeNO,lastName);
if (salaryNI >= 0)
{
printf("%lfnn",salary);
}
else
{
printf("unknownn");
}
}
}
EXEC SQL close cursor1;
EXEC SQL commit;
exec sql connect reset;
return 0;
}
二、利用db2工具预编译,将sql替换成api函数,生成static.c
db2 connect to sample user db2inst1 using panpan --因为需要绑定执行计划,需要连接数据库
db2 prep static.sqc [bindfile] --加上bindfile选项,则生成绑定文件,不在数据库中生成执行计划,prep/precompile
db2 bind static.bnd --绑定访问计划到数据库
三、编译、汇编成目标文件
gcc -c static.c -I /home/db2inst1/sqllib/include -o static.o
四、将生成的目标文件与其他库链接
gcc static.o -o static -l db2 -L /home/db2inst1/sqllib/lib
五、运行可执行文件static
./static
结果报错:
error while loading shared libraries: libdb2.so.1: cannot open shared object file: No such file or directory
六、查看static运行需要的库文件
ldd static
输出:
linux-gate.so.1 => (0x00e32000)
libdb2.so.1 => not found
libc.so.6 => /lib/libc.so.6 (0x00adb000)
/lib/ld-linux.so.2 (0x00ab8000)
七、查找 libdb2.so.1库文件
locate libdb2.so.1
输出:
/opt/ibm/db2/V9.7/lib32/libdb2.so.1
find工具同样可以实现该功能,但是速度慢。
八、建立软链接
ln -s /opt/ibm/db2/V9.7/lib32/libdb2.so.1 /lib/libdb2.so.1
九、再次执行static
./static
输出:
this is a test programming !
000150 ADAMSON 55280.000000
000160 PIANKA 62250.000000
000170 YOSHIMURA 44680.000000
000180 SCOUTTEN 51340.000000
000190 WALKER 50450.000000
000200 BROWN 57740.000000
000210 JONES 68270.000000
000220 LUTZ 49840.000000
200170 YAMAMOTO 64680.000000
200220 JOHN 69840.000000
添加新评论0 条评论