您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 通过嵌入式SQL访问数据库
实验六通过嵌入式SQL访问数据库〖仪器设备〗每位学生一台PC机(标准配制,1G内存),装有SQLServer2005(或SQLServer2000);配备一台教师机为上课教师专用;配备一台数字投影,用于实验讲解。〖分组要求〗20—35人一组〖试验学时〗2学时〖目的要求〗熟悉通过嵌入式SQL编程访问数据库。〖实验内容〗一、数据库环境配置1、创建xuesheng数据库,建立student表等;2、关闭sqlserver2000服务管理器;3、SQLServer2000为其嵌入式SQL提供了一些特殊的接口;默认的安装方式(典型安装)并没有安装这些接口;因此,需要把devtools.rar解压到SQLServer的系统目录下(注意,不是安装目录);本机是把操作系统安装在C盘,则SQLServer的系统目录则是C:\ProgramFiles\MicrosoftSQLServer。4、初始化SQLServer的预编译环境。初始化VisualC++6.0编译器环境,运行文件:\MicrosoftVisualStudio\VC98\Bin\VCVARS32.BAT这个过程要在DOS下运行才有效,即找vcvars32.bat的路径,在DOS下运行。具体步骤:初始化SQLServer的预编译环境,运行文件:\devtools\samples\esqlc\setenv.bat。运行方式与vcvars32.bat相同,结果如下:5、将Binn文件夹拷贝到:C:\ProgramFiles\MicrosoftSQLServer\MSSQL6、启动服务器;二、VC++6.0编辑器配置(初始化Vc++环境)1.工具—选择—目录—IncludeFiles添加:C:\ProgramFiles\MicrosoftSQLServer\devtools\include并设为第一项2.选择LibraryFiles添加:C:\ProgramFiles\MicrosoftSQLServer\devtools\x86lib并设为第一项三、写程序,预编译,最后在VC++中编译、执行1、编辑EXEC.sqc文件,保存到:C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Binn目录EXEC.sqc文件如下://EXEC.cpp:Definestheentrypointfortheconsoleapplication.//#includestdio.h#includestdlib.hEXECSQLBEGINDECLARESECTION;/*主变量说明开始*/chardeptname[64];charHSno[64];charHSname[64];charHSsex[64];intHSage;intNEWAGE;longSQLCODE;EXECSQLENDDECLARESECTION;/*主变量说明结束*/EXECSQLINCLUDEsqlca;/*定义SQL通信区*//*************************************************************************/intmain(void)/*C语言主程序开始*/{intcount=0;charyn;/*变量yn代表yes或no*/printf(Pleasechoosethedepartmentname(CS/MA/IS):);scanf(%s,deptname);/*为主变量deptname赋值*/EXECSQLCONNECTTOdeminUSERsa;/*连接数据库TEST*/EXECSQLDECLARESXCURSORFOR/*定义游标*/SELECTSno,Sname,Ssex,Sage/*SX对应语句的执行结果*/FROMStudentWHERESDept=:deptname;EXECSQLOPENSX;/*打开游标SX便指向查询结果的第一行*/for(;;)/*用循环结构逐条处理结果集中的记录*/{EXECSQLFETCHSXINTO: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(UPDATEAGE(y/n)?);/*询问用户是否要更新该学生的年龄*/do{scanf(%c,&yn);}while(yn!='N'&&yn!='n'&&yn!='Y'&&yn!='y');if(yn=='y'||yn=='Y')/*如果选择更新操作*/{printf(INPUTNEWAGE:);scanf(%d,&NEWAGE);/*用户输入新年龄到主变量中*/EXECSQLUPDATEStudent/*嵌入式SQL*/SETSage=:NEWAGEWHERECURRENTOFSX;}/*对当前游标指向的学生年龄进行更新*/}EXECSQLCLOSESX;/*关闭游标SX不再和查询结果对应*/EXECSQLCOMMITWORK;/*提交更新*/EXECSQLDISCONNECTTEST;/*断开数据库连接*/}2、使用MS-DOS进行预编译:1)进到Binn文件下:cdC:\ProgramFiles\MicrosoftSQLServer\MSSQL\Binn2)调用预编译程序nsqlprep.exe程序:nsqlprepEXEC成功编译完成结果:见附件13、使用Vc++进行编译,见附件24、添加库文件:工程—设置—Link—对象/库模块输入SQLakw32.libCaw32.lib两个文件名。附件3注意,两个文件之间用空格分开。5、将动态链接库SQLakw32.dll,sqlaiw32.dll文件拷贝到操作系统目录下的子目录C:\WINDOWS\system32中6、连接:附件47、执行:附件5附件1:附件2(VC编译EXEC.C)附件3(配置添加库文件)附件4(连接)
本文标题:通过嵌入式SQL访问数据库
链接地址:https://www.777doc.com/doc-4835291 .html