C语言中嵌入式SQL语句

实验内容

掌握SQL Server 2000的预编译程序NSQLPREP.EXE的使用(以课本例题1进行调试);

实验步骤

一、数据库环境配置

1、创建xuesheng数据库,建立student表等;

2、关闭sql server 2000服务管理器;

3、将devtools文件夹拷贝到:C:\Program Files\Microsoft SQL Server

4、将Binn文件夹拷贝到:C:\Program Files\Microsoft SQL Server\MSSQL

5、启动服务器;

二、VC++6.0编辑器配置(初始化Vc++环境)

1.工具—>选择—>目录—>Include Files

添加: C:\Program Files\Microsoft SQL Server\devtools\include

并设为第一项

2.选择Library Files

添加:C:\Program Files\Microsoft SQL Server\devtools\x86lib

并设为第一项

三、写程序,预编译,最后在VC++中编译、执行

1、编辑EXEC.sqc文件,保存到:C:\Program Files\Microsoft SQL Server\MSSQL\Binn目录

EXEC.sqc文件如下:

// EXEC.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <stdlib.h>


EXEC SQL BEGIN DECLARE SECTION; /*主变量说明开始*/
char deptname[64];
char HSno[64];
char HSname[64];
char HSsex[64];
int HSage;
intNEWAGE;
long SQLCODE;
EXEC SQL END DECLARE SECTION; /*主变量说明结束*/

EXEC SQL INCLUDE sqlca; /*定义SQL通信区*/

/*************************************************************************/

int main(void) /*C语言主程序开始*/
{
int count = 0;
char yn; /*变量yn代表yes或no*/
printf("Please choose the department name(CS/MA/IS): ");
scanf("%s", deptname); /*为主变量deptname赋值*/
EXEC SQL CONNECT TO demin USER
sa; /*连接数据库TEST*/
EXEC SQL DECLARE SX CURSOR FOR /*定义游标*/
SELECT Sno, Sname, Ssex, Sage /*SX对应语句的执行结果*/
FROM Student
WHERE SDept = :deptname;
EXEC SQL OPEN SX; /*打开游标SX便指向查询结果的第一行*/

for ( ; ; ) /*用循环结构逐条处理结果集中的记录*/
{
EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage;
/*推进游标,将当前数据放入主变量*/
if (sqlca->sqlcode != 0) /* sqlcode != 0,表示操作不成功*/
break; /*利用SQLCA中的状态信息决定何时退出循环*/
if(count++ == 0) /*如果是第一行的话,先打出行头*/
printf("\n%-10s %-20s %-10s %-10s\n", "Sno", "Sname", "Ssex", "Sage");
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 NEW AGE:");
scanf("%d",&NEWAGE); /*用户输入新年龄到主变量中*/
EXEC SQL UPDATE Student /*嵌入式SQL*/
SET Sage = :NEWAGE
WHERE CURRENT OF SX ;
} /*对当前游标指向的学生年龄进行更新*/
}

EXEC SQL CLOSE SX; /*关闭游标SX不再和查询结果对应*/
EXEC SQL COMMIT WORK; /*提交更新*/
EXEC SQL DISCONNECT TEST; /*断开数据库连接*/
}

<shapetype id="_x0000_t202" path="m,l,21600r21600,l21600,xe" o:spt="202" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><path o:connecttype="rect" gradientshapeok="t"></path></shapetype>2、使用MS-DOS进行预编译:

1)进到Binn文件下:cd C:\Program Files\Microsoft SQL Server\MSSQL\Binn

2)调用预编译程序nsqlprep.exe程序:nsqlprep EXEC

成功编译完成结果:

见附件1

3、使用Vc++进行编译,见附件2

4、添加库文件:工程—>设置—>Link—>对象/库模块

输入SQLakw32.lib Caw32.lib两个文件名。附件3
注意,两个文件之间用空格分开。
5、将动态链接库SQLakw32.dll,sqlaiw32.dll文件拷贝到操作系统目录下的子目录C:\WINDOWS\system32中

6、连接:附件4

7、执行:附件5

附件1:

附件2(VC编译EXEC.C)

附件3(配置添加库文件)

附件4(连接)

嵌入式SQL编程的范例,使用VC6编译Oracle 10g 嵌入式SQL程序操作步骤 一、 基本要求 1、所需软件Visual C++ 6.0 2、 源代码包括 PRO C 文件: student.pc 3、安装ORACLE10G 或其客户端 在ORACLE10G CLIENT 安装时并没有 Precomp C 的选项,可以选择全部安装或者开发人员选项进行安装。安装后确保有如下几个文件: PROC的可执行文件 : $ORACLE_HOME\BIN\PROC.EXE Oracle支持SQL在VC环境的库文件OraSQL10.LIB Oracle支持SQL在VC环境的头文件 : 位于$ORACLE_HOME\precomp\ PUBLIC \*.h 文件 二、 将PROC集成到VC环境中 1、增加PROC到Tools(工具)菜单列表 在本例中,$ORACLE_HOME指的是E:\oracle\product\10.1.0\db_1目录。   a) 运行Microsoft Visual C++ 6.0;   b) 从菜单项Tools(工具)中选择Customize(定制)项。为表述简单起见,书写成如下格式:菜单Tools/ Customize(工具/定制) 项。以下采用类似的表达方法。此时出现Customize(定制)对话框;   c) 单击Tools(工具)选项卡(或属性页),用鼠标移动“Menu contents(菜单目录)”框滚动条到底部区域;   d) 双击点划线矩形区域,在空白区域上输入“PROC”,然后按回车键;   e) 在“Command(命令)”框中,输入PROC的可执行文件名。例如:E:\oracle\product\10.1.0\db_1\BIN\ PROC. EXE  f) 在“Arguments(参数)”框中输入“$(TargetName)”。其作用在从菜单Tools中选择PROC项时,VC会将当前项目名传递给PROC,尔后PROC会直接打开该项目文件目录下扩展名为 .pre的同名文件; g) 在“Initial directory(初始化目录)”框中输入“$(WkspDir)” / 单击“Close(关闭)”按钮,完成将PROC集成到VC环境中的工作。 2、指定头文件路径   为了确保VC顺利完成编译链接,需要将Oracle提供的头文件增加到VC环境中。指定头文件路径的具体步骤如下。   a) 菜单Tools / Options(工具/选择)项,出现“Options(选择)”对话框;   b) 单击“Directories(目录)”选项卡,从“Show directories for(显示目录为):”列表框中选择“Include files”;   c) 移动“Directories(路径)”框的滚动条到底部区域; d) 双击点划线矩形区域,在空白区域上输入包含Oracle支持SQL在VC环境头文件的子目录,对缺省安装即输入E:\oracle\product\10.1.0\db_1\ PRECOMP \ PUBLIC。 e) 单击“Directories(目录)”选项卡,从“Show directories for(显示目录为):”列表框中选择“Library files”;   f) 移动“Directories(路径)”框的滚动条到底部区域; d) 双击点划线矩形区域,在空白区域上输入包含Oracle支持SQL在VC环境头文件的子目录,对缺省安装即输入E:\oracle\product\10.1.0\db_1\ PRECOMP \ lib\msvc。 3、可执行文件路径 a) 菜单Tools / Options(工具/选择)项,出现“Options(选择)”对话框; b) 单击“Directories(目录)”选项卡,从“Show directories for(显示目录为):”列表框中选择“Executable files”; c) 查看“Directories(路径)”框是否包括$ORACLE_HOME\BIN 路径,一般先安装ORACLE再安装VC,这个路径会包括在内的,如果没有包括,添加这么一条路径。 三、 程序创建过程 1、 创建新工程 当运行Visual C++ 6.0后,操作步骤如下:   a) 菜单File / New项 / Project卡;   b) 选择Win32 console Application 项;   c) 由浏览选择或直接输入工程将位于的路径 / 填入创建的工程名如student 。 d) 单击OK按钮 / 依缺省值单击Finish / 单击OK,完成创建控制台应用工程框架。 e) 菜单工程/设置 项/link卡, 添加两个文件 oraSQL10.lib, oraSQX10.lib 到对象/库模块中 2、将PRO C 文件加入工程  a) 菜单Project / Add To Project 项 / Files 项;   b) 将文件对话框的文件类型改为“所有文件”;   c) 路径选为student.pc 文件所在目录   d) 选择student.pc文件,单击“打开”钮,完成将PRO C文件加入工程。 3、预编译  通过预编译,将预编译源文件如student.pc转换成为student.c的C程序源文件。在PROC集成到VC环境下时操作步骤如下:   a) 菜单Tools / PROC 项; b)此时弹出PROC预编译命令行窗口,从窗口标题可以看成,其执行E:\oracle\product\10.1.0\db_1\BIN\ PROC. EXE student 当窗口提示:“press any key to continue” ,敲任意键该窗口关闭。 此时可以看到生成student.c 文件 c) 如果预编译结束,预编译对话框左边显示的状态图标为黄色(警告)或红色(预编译失败)时,应双击该标识观察帮助或出错信息。预编译失败,应当修改源程序,再进行预编译,直到通过预编译。 4、编译准备   为了使工程能通过编译,需要将预编译输出的工程源文件和Oracle支持SQL在VC环境下的运行库文件加入到工程中,下面具体介绍增加这两个文件的步骤。   1) 将预编译的输出文件和有关头文件加入工程   a) 菜单Project / Add To Project 项 / Files 项;   b) 在文件对话框中选择正确路径,选定预编译输出生成的文件student.c,单击“打开”按钮,即将这些文件加入工程。   2) 将运行库文件加入工程   a) 菜单Project / Add To Project 项 / Files 项;   b) 将文件对话框的文件类型改为“所有文件”;   c) 路径选为$ORACLE_HOME\precomp\LIB   d) 选择OraSQL10.LIB文件,单击“打开”钮,完成将运行库文件加入工程。 5、编译链接   按F7键或单击编译图标,对工程进行编译链接。如果没有出现错误,则通过编译链接,生成可执行文件如student.exe。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值