C语言中使用嵌入式sql

我想用在C程序中嵌入sql连接SQLServer2000.代码如下:如何修改?#include<stdio.h>EXECSQLINCLUDESQLCA;voidmain(... 我想用在C程序中嵌入sql连接SQL Server 2000.代码如下:如何修改?#include<stdio.h>
EXEC SQL INCLUDE SQLCA;
void main()
{
EXEC SQL CONNECT TO test USER ;//数据库名叫test ,我平时是以windows 验 证的方式登录sql 2000的。
if(sqlca.sqlcode)
{
printf("连接出错");
}
else
printf("成功");
}
展开
 我来答
星月小木木
2015-12-18 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:1亿
展开全部
嵌入式SQL程序的VC+SQL server 2000实现的环境配置

嵌入SQL的C应用程序具体到VC++6.0, SQL Server2000 下调试可分为五步:1、环境初始化;2、预编译;3、编译;4、连接;5、运行。下面就其中重要的的操作方法给以详细说明。
1、环境初始化
(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的安装方式没有安装这此接口;因此,需要把devtools.rar解压到SQLServer的系统日录下(即文件夹devtools中的所有文件);如果操作系统安装在C盘,则SQL Server的系统目录是C:\Program Files\Microsoft SQL Server。(或 在安装Microsoft SQL Server 2000时选择安装Development Tools,为使用嵌入式SQL语言准备必要的头文件和库文件。)
( 2)初始化Visual C++ 6.0编译器环境。在命令行方式下运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
(3)初始化SQL Server的预编译环境。在命令行方式下运行文件:\Devtools\samples\esqlc\setenv.bat。
( 4) VC++6.0环境配置。具体配置分为如下三步[:
①Tools->options->directories->Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。将SQL server自带的用于数据库开发的头文件包含到工程环境中。
②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。将开发用到的包包含到工程中。
③project->Settings->Link->Object/Library Modules,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。

2、预编译
C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安装日录的MSSQL\Binn下。若SQL Server数据库采用的是默任安装方式,则需要把binn.rar的内容拷贝到指定目录下。

Microsoft SQL Server 2000提供的预编译程序nsqlprep.exe,用于对嵌入式SQL程序进行预编译处理,生成C语言源程序.实际上就是将嵌入式SQL程序中的嵌入式SQL语句替换为对运行时库文件Sqlakw32. dll的函数调用,接着运行时库文件调用动态连接库Ntwdblib. dll通过网络来存取Microsoft SQL Server 2000数据库服务器.
预编译程序nsqlprep的常用语法为:
nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password
其中ESQL_File是要预编译的嵌入式SQL程序;/SQLACCESS通知nsqlprep自动地为嵌入式SQL程序中的静态SQL语句创建相应的存储过程;/DB server_name.database_name指明要连接的服务器以及数据库名称;/PASS login.password给出登录名及相应的口令.

下面的程序demo.sqc实现了从数据库服务器hushaobo的数据库pubs中的authors表中读取au_lname为white的人对应的 au_fname 值,并保存到变量first_name 中显示出来。(连接数据库的用户为sa,对应密码为1982)

#include<stdio.h>
void main()
{
EXEC SQL BEGIN DECLARE SECTION;
char first_name[40];
char last_name[]="White";
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO hushaobo.pubs
USER sa.1982;
EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name;
EXEC SQL DISCONNECT ALL;
printf("first name: %s \n",first_name);
}

在命令行下运行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982
则生成demo.c,将该文件添加到VC工程中编译即可。

3、编译,连接与运行
在VC++6.0中创建一个 "WIN32 Console Application"的Proiect,然后将预编译生成的c文件加入Proiect,编译连接即可生成访问SQL Server的可执行程序。 Visual C++ 6.0进行编译连接时需要用到动态链接库SQLakw32.d11与SQLaiw32.d11;尽管这两个文件已经随同binn.rar被拷贝到SQLServer安装目录的MSSQL\Binn文件夹下,但仍然需要把它们的路径加到系统路径变量中,以使得程序运行时能找到它们,具体添加方法如下:
方法1:把这两个文件拷贝到操作系统目录下的system32子目录中。
方法2:我的电脑->属性->高级->环境变量->path->编辑,在变量值中加入路径值;新路径与已有路径间用;间隔。

注意调适程序时,文件名中不要包含cursor,否则可能会出错。
匿名用户
2013-07-15
展开全部
我以前做过的进销存系统..部分代码(主函数和一个模块): ****************进销存管理系统****************/
#include <stdio.h>
#include <stdlib.h>
long SQLCODE;
EXEC SQL INCLUDE sqlca; /*定义SQL通信区.*/
void show_msg() //打印界面函数
{
system("cls");
printf("*****************************************************\n");
printf(" 欢迎使用本系统\n");
printf("1.入货\n2.入货记录\n3.销售\n4.销售记录\n5.库存浏览\n6.库存查找\n7.供应商列表\n0.退出系统\n");
printf("****************************************************\n");
printf("请选择操作:");
} void book_in() //入库函数
{
char temp;
EXEC SQL BEGIN DECLARE SECTION; /*主变量定义开始.*/
int Hbook_shuliang;
char Hbook_id[11];
char Hgys_id[11];
char Hbook_name[31];
char Hbook_leibie[21];
char Hgys_name[31];
EXEC SQL END DECLARE SECTION; /*主变量定义结束*/
lab2: printf("请输入图书编号:");
scanf("%s",&Hbook_id);
printf("请输入图书名:");
scanf("%s",&Hbook_name);
printf("请输入图书类别:");
scanf("%s",&Hbook_leibie);
printf("请输入供应商编号:");
scanf("%s",&Hgys_id);
printf("请输入供应商名称:");
scanf("%s",&Hgys_name);
printf("请输入图书数量:");
scanf("%d",&Hbook_shuliang);
//书信息插入book(书)数据表
EXEC SQL insert
into book
values(:Hbook_id,:Hbook_name,:Hbook_leibie);
//将供应商信息插入book_gys(供应商)数据表
EXEC SQL insert
into book_gys
values(:Hgys_id,:Hgys_name);
//将记录插入到boo_in(进货表)数据表
EXEC SQL insert
into book_in
values(:Hbook_id,:Hgys_id,:Hbook_shuliang,GETDATE());
EXEC SQL COMMIT TRANSACTION; /*事务提交*/
printf("入库成功,输入Y继续输入其他要入库的书.其他键返回主菜单:");
getchar();
scanf("%c",&temp);
if(temp=='y'||temp=='Y')
goto lab2;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式