嵌入式SQL访问数据库实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
黄冈师范学院
提高型实验报告
实验课题嵌入式SQL访问数据库(实验类型:□综合性■设计性□应用性)
实验课程数据库系统概论
实验时间2012年5月25日
学生姓名邵旭东
专业班级信息1001班
学号201021240106
一、实验目的和要求
1. 编写嵌入式C程序,编程实现了对“学生课程数据库”的访问和对
Student表中年龄进行更新。
2. 装SQL Server2000和Visual C++程序。
3、将一段连续的SQL操作写成嵌入到C程序中的程序,调试程序,
使得程序能完成一项复杂的数据处理功能,并提交程序。
二、实验条件
R429三星笔记本电脑一台。
三、实验原理分析
四、实验方案或步骤
1.初始化编译环境
将SQL安装光盘内的DEVTOOLS文件夹复制到SQL的安装目录下(!!默认下为C:\Program Files\Microsoft SQL Server\),执行.\DEVTOOLS\SAMPLES\ESQLC\目录中的UNZIP_ESQLC.EXE文件(!!点击finish,默认解压到当前目录下!!),解压预编译必要的头文件和库文件,然后运行解压出来的批处理文件setenv.bat初始化SQL预编译环境(这项操作实际上设置两个环境变量)。
接下来添加SQL预编译接口,将安装光盘中X86\BINN中的nsqlprep.exe,sqlaiw32.dll,sqlakw.32.dll复制到SQL安装目录(!!默认下为C:\Program Files\Microsoft SQL Server\)中的\MSSQL\Binn\(注:\MSSQL\Binn\改为:\MSSQL\Binn;)目录下,并将C:\Program Files\Microsoft SQL Server\MSSQL\Binn添加到环境变量中(方法是:右击我的电脑,点击我的电脑属性,点击高级,点击环境变量,点击path ,粘贴在‘;’号后)。
SQL设置完了,现在开始设置VC编译环境。进入VC安装目录(默认为C:\Program Files\Microsoft Visual Studio\),运行VC98\Bin目录中的批处理文件VCVARS32.BAT。
运行VC,添加二次编译ESQL程序的头文件和库文件:
(1).工具->选项->目录->在Include files中添加SQL安装目录\devtools\include\ (默认为: C:\Program Files\Microsoft SQL Server\devtools\include)将SQL server自带的用于数据库开发的头文件包含到工程环境中。
(2).工具->选项->目录->在Lib files中添加SQL安装目录\devtools\x861ib\(默认为: C:\Program Files\Microsoft SQL Server\devtools\x86lib)将开发用到的包包含到工程中。
2.ESQL程序代码的编写与调试
#include
#include
EXEC SQL BEGIN DECLARE SECTION;
char deptname[20];
char HSno[9];
char HSname[20];
char HSsex[4];
int HSage;
int NEWAGE;
EXEC SQL END DECLARE SECTION;
long SQLCODE;
EXEC SQL INCLUDE sqlca;
int main()
{
int count=0;
char yn;
printf("请输入您要更新的系名(Sdept):");
scanf("%s",&deptname);
EXEC SQL CONNECT TO X6X8-20120111LP.sxd USER sa.123456;
EXEC SQL DECLARE SX CURSOR FOR
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE Sdept=:deptname;
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","Sage");
}
printf("%-10s%-20s%-10s%-10d\n",HSno,HSname,HSsex,HSage);
printf("是否修改年龄?(y/n)");
do
{
scanf("%c",&yn);
}while(yn!='n'&&yn!='N'&&yn!='Y'&&yn!='y');
if(yn=='y'||yn=='Y')
{
printf("输入新的年龄:");
scanf("%d",&NEWAGE);
EXEC SQL UPDATE Student
SET Sage=:NEWAGE
WHERE CURRENT OF SX;
}
else
{
printf("是否退出程序?(Y/N)");
do
{
scanf("%c",&yn);
}while(yn!='n'&&yn!='N'&&yn!='Y'&&yn!='y');
if(yn=='y'||yn=='Y')
{
break;
}