108、Windows下ESQL/C编程实例

前段时间编译ESQL/C程序都是在Linux平台下编译,回家没编译环境,只好尝试windows下的编译。

数据库:Sybase Adaptive Server Enterprise 12.5 (ASE12.5)

开发工具:vc6.0

Sybase安装目录为E:\sybase

设置环境变量:include、lib

include=%include%;E:\sybase\OCS-12_5\include

lib=%lib%;E:\sybase\OCS-12_5\lib

(右键单击“我的电脑”,选择“属性”菜单项,再选择“高级”选项卡,点击“环境变量”)

数据库实例名:WEIHB

数据库名:mydb

表名:employee

Create table employee

(

emp_id varchar(10) not null primary key,

emp_name varchar(20) not null,

emp_sex char(1),

emp_birth date,

emp_hobby varchar(100)

)

数据库中的数据如下:


编写代码,文件C:\sybsimp.ec

通过输入的emp_id信息,查询emp_name字段信息并显示。

#include<stdio.h>

#include<string.h>

#define SQL_SUCCESS 0

#define DATA_NOT_FOUND 100

EXEC SQL INCLUDE sqlca;

int main(int argc, char *argv[])

{

EXEC SQL BEGIN DECLARE SECTION;

char szServer[20 + 1];

char szUser[20 + 1];

char szPwd[20 + 1];

char szDb[20 + 1];

char szEmpId[20 + 1];

char szEmpName[20 + 1];

EXEC SQL END DECLARE SECTION;

strcpy(szServer, "WEIHB");

strcpy(szUser, "sa");

strcpy(szPwd, "");

strcpy(szDb, "mydb");

printf("Please enter employee id:");

gets(szEmpId);

EXEC SQL CONNECT :szUser IDENTIFIED BY :szPwd using :szServer;

if(sqlca.sqlcode != SQL_SUCCESS)

{

printf("An error occured!%s,%d,error id:%d\t msg:%s\n",\

__FILE__, __LINE__, sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);\

getch();

exit(1);

}

EXEC SQL USE :szDb;

EXEC SQL

SELECT

emp_name into :szEmpName

FROM

employee

WHERE emp_id=:szEmpId;

if(sqlca.sqlcode == DATA_NOT_FOUND)

{

fprintf(stderr, "data not found\n");

EXEC SQL DISCONNECT CUREENT;

getch();

exit(1);

}

printf("emp_name:%s\n", szEmpName);

EXEC SQL DISCONNECT CURRENT;

getch();

return 0;

}

将E:\sybase\OCS-12_5\include目录下的sybesql.c文件拷贝到C:\下。

打开“命令提示符”并切换到C:\

预编译操作,执行:

cpre sybsimp.ec

生成可执行文件:

cl sybsimp.c sybesql.c /link libct.lib libcs.lib


注:

cl是vc6.0提供的C/C++编译器,/link选项后的参数是传递给连接器link.exe的,此处用到了sybase的链接库,所以需要指定。

在预编译时产生3个警告,是因为没有添加三个回调函数,可以不用去理会它。

可执行文件名为sybsimp.exe,执行该文件显示如下:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值