《数据库实验-通过嵌入式SQL访问数据库.docx》由会员分享,可在线阅读,更多相关《数据库实验-通过嵌入式SQL访问数据库.docx(7页珍藏版)》请在第壹文秘上搜索。
1、数据库原理课程实验报告1 .实验题目:实验五通过嵌入式SQL访问数据库2 .实验目的熟悉通过嵌入式SQL(主语言C语言)编程访问数据库3实验平台2.1 操作系统:Windows2000或者WindowsXP注:使用ProfeSSiOnal版的操作系统建议安装数据库管理系统的教学版,SerVer版的操作系统建议安装数据库管理系统的企业版。2.2 数据库管理系统:SQLServer2000数据库管理系统4实验内容及要求内容:熟悉RDBMS的预编译程序。掌握SQLSerVer2000的预编译程序NSQLPREPEXE的使用(以课本例题1进行调试)。要求:在本报告中列出程序代码及注释,保证程序能正确编
2、译运行。5.实验内容与完成情况:嵌入式SQL的C语言应用程序在VC+6.0.SQLServer2000环境下的调试可分为五步:第一步环境初始化;第二步预编译;第三步编译;第四步连接;第五步运行。1、环境初始化(1)将文件夹devtools复制到SQLServer的系统目录C:ProgramFilesVMicrosoftSQLServer(或在安装MicrosoftSQLServer2000时选择安装DevelopmentTools,为使用嵌入式SQL语言准备必要的头文件和库文件。)(2)初始化VisualC+6.0编译器环境。在命令行方式下运行文件MicrosoftVisualStudioWC
3、98Binvcvars32.bat。运彳亍文件MicrosoftVisualStudioWC98Binvcvars32.bato本人直接是由附件里的运行程序直接运行曰Windows将根据您所城入的名称,为您打开相应的程序、文件夹、文档或Internet资源.打开(O):F:VC98BinVCVARS32.BAT曾使用管理权限创建此任务.确定取消浏览(3)初始化SQLServer的预编译环境。在命令行方式下运行文件:C:ProgramFilesXMicrosoftSQLServerDEVTOOLSSAMPLESESQLCsetenv.bato本人直接是由附件里的运行程序直接运行(4)VC+6.0
4、环境配置。具体配置分为如下三步:单击菜单中TOOIS(工具)-options(选择),directories(目录),IncludeFiles:添加C:ProgramFilesMicrosoftSQLServerdevtoolsincludeo将SQLserver自带的用于数据库开发的头文件包含到工程环境中。TOOIS(工具options(选择)-directories(目录)-LibFiles:添加C:ProgramFilesVMicrosoftSQLServerdevtlsx861ibo将开发用到的包包含到工程中。编辑器制表符I调试兼容性I编译目录I工作区宏I数.E平台(H目录但1:IWi
5、n32ILibraryfiles路径回:WrX3F:WC981UBEVC98tMFCUJBPRoGRAMFILESWICROSoFTSQLSERVERIDEVTooLSX86UB确定取消PrOjeCt(工程),Settings(设置Link-Object(对象)/LibraryModules(库模块),添加库文件:SQLakW32.1ib,Caw32.1ib。这两个文件之间用空格分开。注意:在VC+6.0中要先创立一个WIN32ConsoleApplication6Proiect,才可以做该设置。ProjectSettings设置区):IWin32DebUg:|SPch2常授I调试Cc连接资源
6、浏览信息I匚因分类:常短J剧新(B)幡出文件名:Debugch2.ee对象/库模块:kernel32.libuser32.libRW嗝制MlH!BffUIIJQdi32.libVQ产生调试信息忽略全部默认库W增加链接厂产生MAP文件允许配置文件工程选项9):kernel32.libuser32.libSQLakw32.libCaw32.libgdi32.libwinspool.libcomdlg32.libadvapi32.libshell32.libole32.liboleaut32.libuuid.libodbc32.lib一确定I取消2、预编译1)复制ESQL预编译文件及库文件C语言编译
7、程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQLServer的预处理程序是nsqlprep.exeonsqlprep.exe在SQLServer安装日录的MSSQLVBinn下。假设SQLSerVer数据库采用的是默任安装方式,那么需要把nsqlprep.exe、SQLAIW32.DLL.SQLAKW32.DLL个文件拷贝到MSSQLBirm目录下。2)将动态链接库SQLAKW32.dll,SQLAIW32.dll文件拷贝到操作系统目录下的子目录C:WINDOWSsystem32中。3)创立嵌入式SQL的C源文件ESqLC#include#includeEXECS
8、QLBEGINDECLARESECTION;*主变量说明开始*/chardeptname22;charHSno10;charHSname22;charHSsex4;intHSage;intNEWAGE;longSQLCODE;EXECSQLENDDECLARESECTION;*主变量说明结束*/EXEC SQL INCLUDE sqlca;*定义SQL通信区*/*/int main(void)*C语言主程序开始刃intcount=O;charyn;*变量yn代表yes或no*/printf(Pleasechoosethedepartmentname(CSMAIS):);scanf(%sr,de
9、ptname);*为主变量deptname赋值*/EXECSQLCONNECTTOStudent;*连接数据库STUDENTDb*/EXECSQLDECLARESXCURSORFOR*定义游标*/SELECTSno,Sname,Ssex,Sage*SX对应语句的执行结果*/FROMStudentWHERESDept=:deptname;EXECSQLOPENSX;*翻开游标SX便指向查询结果的第一行*/for(;)/*用循环结构逐条处理结果集中的记录*/(EXECSQLFETCHSXINTO:HSno,:HSname,:HSSeX,:HSage;/*推进游标,将当前数据放入主变量*/if(sq
10、lca-sqlcode!=O)*sqlcode!=0,表示操作不成功*/printf(数据处理结束!);break;/*利用SQLCA中的状态信息决定何时退出循环*/if(count+=0)/*如果是第一行的话,先打出行头*/printf(n%-10s%-22s%-4s%-10sn,Sno,Sname,Ssex,Sage);printf(%-10s%-22s%-4s%-10dnHSno,HSname,HSsex,HSage);/*打印查询结果*/printf(UPDATEAGE(yn)?*);/*询问用户是否要更新该学生的年龄*/doscanf(%c,cd.C:cdprogramilesC:P
11、rogranFilescdnicrosoftSqlserverIC:ProgramFilesXMicrosoftSQLSe*Me*cd mssqlC:XProgranFilesMIicrosoftSQLServerXSSQLcd binnC: Program yEsql.sqc Microsoft ICoPyIkight FilesXMicrosoftSQLSeruerMISSQLxBinnnsqlprep D:09072106ESQLTestJ1Embedded SQLforC Pre-Conpiler. Uersion 8.00.194.Microsoft Corp 1993-1998.
12、All rights reserved.Microsoft CopyrightMyEsql.sqc32-bitCC+OPtimiZingCompilerUersion12.00.8168for80x86MicrosoftCorp1984-1998.Allrightsreserved.|C:ProgramPileS5icrosoftSQLSerUer5SSQLBinn6)编译,连接与运行在VC+6.0中创立一个WIN32ConsoleApplicationProiect,然后将预编译生成的c文件参加Proiect,编译连接即可生成访问SQLSerVer的可执行程序。*E:09072106ch5Debugch5.exePleasechoosethedepartmentnane:ISSnoSnameSsexSage200215125张立男19UPDATEAGE7n200215126张家辉男20UPDATEAGE7yINPUTNEWAGE:n200215127李四男19UPDATEAGE?数据处理结束!Pressanykeytocontinue6 .出现的问题:实验上机前,因为个人电脑安装C+在D盘,所以实验初始化ViSUalC+6