用纯C连接SQL SERVER2005的问题

时间:2021-02-01 17:12:57
现在初学数据库,老师要我们自己去摸索如何在纯C,即TurboC下连接数据库,我们书上有段代码:
#include   <windows.h>     

#include   <stdio.h>   

EXEC SQL BEGIN DECLARE SECTION;
char deptname[20];
char HSno[9];
char HSname[20];
char HSsex[2];
int HSage;
int NEWAGE;
EXE SQL END DECLARE SECTION;
long SQL INCLUDE sqlca;

int main()
{
int count=0;
char yn;
printf("Please choose the department name(CS/MA/IS):");
scanf("%s",&deptname);
EXEC SQL CONNECT TO StarVally_Bak USER "MY-TOMATO\Y.Yang"/"lakewalker"
EXEC SQL DECLARE SX CURSOR FOR
SELECT Sno,Sname,Ssex,Sage
FROM "S-T".Student
WHERE SDept=:dept
    EXEC SQL OPEN SX;
for(;;)
{
EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex, :HSage;
if(sqlca.sqlcode!=0)
{
break;
}
if(count++==0)
printf("\n% -10s % -20s % -10s % -10s\n","Sno","Sname","Ssex","HSage");

printf("% -10s % -20s % -10s % -10d\n",HSno,HSname,HSsex,HSage);

printf("UPDATE AGE(y/n)?");
do
{
scanf("%C",&yn);
}
while(yn!='N'&&yn!='n'&&yn!='Y'&&yn!='y');

if(yn=='Y'||yn=='y')
{
printf("INPUT NEWAGE");
scanf("%d",&NEWAGE);
EXEC SQL UPDATE Stduent
SET Sage=:NEWAGE
WHERE CURRENT OF SX;
}
}

EXEC SQL CLOSE SX;
EXEC SQL COMMIT WORK;
EXEC SQL DISCONNECT TEST;
}

我机器上安装的是SQL SERVER2005,这段代码进行编译,系统报错,无法编译通过。网上查了很多,也没有相关的文章,只好在这请教各位高手了,帮忙帮忙!应该如何进行连接?

9 个解决方案

#1


告诉你们老师,他很欠扁。

#2


直接调用api或者用VC做成Dll供c代码调用。

#3


在理论上使用C语言可以直接和任何的DBMS相联,但是在TC环境下是做不到的。可能你TC太老了吧,不支持这样的数据库接口技术。建议用VC,要是你非要用TC就只能直接调用api或者用VC做成Dll供c代码调用。我是这样理解的,不知道这样回答你的问题能否满意。

#4


现在都在用VC吧
怎么还在TC呢

#5


VC也没有啊…… 是不是要进行相关设置啊?

#6


哪里报错了?

#7


引用 1 楼 VBSpine 的回复:
告诉你们老师,他很欠扁。

#8


引用 3 楼 ky000 的回复:
在理论上使用C语言可以直接和任何的DBMS相联,但是在TC环境下是做不到的。可能你TC太老了吧,不支持这样的数据库接口技术。建议用VC,要是你非要用TC就只能直接调用api或者用VC做成Dll供c代码调用。我是这样理解的,不知道这样回答你的问题能否满意。

---
TC可以调用dll????
静态库还好,动态库,基本上不可能。。。

#9


引用楼主 glakewalker 的帖子:
现在初学数据库,老师要我们自己去摸索如何在纯C,即TurboC下连接数据库,我们书上有段代码: 
#include    <windows.h>      

#include    <stdio.h>    

EXEC SQL BEGIN DECLARE SECTION; 
char deptname[20]; 
char HSno[9]; 
char HSname[20]; 
char HSsex[2]; 
int HSage; 
int NEWAGE; 
EXE SQL END DECLARE SECTION; 
long SQL INCLUDE sqlca; 

int main() 

int count=0; 
char yn; 
printf("Pl…

------
伪码和代码共存。。。。
恐怖啊

#1


告诉你们老师,他很欠扁。

#2


直接调用api或者用VC做成Dll供c代码调用。

#3


在理论上使用C语言可以直接和任何的DBMS相联,但是在TC环境下是做不到的。可能你TC太老了吧,不支持这样的数据库接口技术。建议用VC,要是你非要用TC就只能直接调用api或者用VC做成Dll供c代码调用。我是这样理解的,不知道这样回答你的问题能否满意。

#4


现在都在用VC吧
怎么还在TC呢

#5


VC也没有啊…… 是不是要进行相关设置啊?

#6


哪里报错了?

#7


引用 1 楼 VBSpine 的回复:
告诉你们老师,他很欠扁。

#8


引用 3 楼 ky000 的回复:
在理论上使用C语言可以直接和任何的DBMS相联,但是在TC环境下是做不到的。可能你TC太老了吧,不支持这样的数据库接口技术。建议用VC,要是你非要用TC就只能直接调用api或者用VC做成Dll供c代码调用。我是这样理解的,不知道这样回答你的问题能否满意。

---
TC可以调用dll????
静态库还好,动态库,基本上不可能。。。

#9


引用楼主 glakewalker 的帖子:
现在初学数据库,老师要我们自己去摸索如何在纯C,即TurboC下连接数据库,我们书上有段代码: 
#include    <windows.h>      

#include    <stdio.h>    

EXEC SQL BEGIN DECLARE SECTION; 
char deptname[20]; 
char HSno[9]; 
char HSname[20]; 
char HSsex[2]; 
int HSage; 
int NEWAGE; 
EXE SQL END DECLARE SECTION; 
long SQL INCLUDE sqlca; 

int main() 

int count=0; 
char yn; 
printf("Pl…

------
伪码和代码共存。。。。
恐怖啊