数据库实验-通过嵌入式SQL访问数据库_第1页
数据库实验-通过嵌入式SQL访问数据库_第2页
数据库实验-通过嵌入式SQL访问数据库_第3页
数据库实验-通过嵌入式SQL访问数据库_第4页
数据库实验-通过嵌入式SQL访问数据库_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库原理课程实验报告1.实验题目:实验五通过嵌入式SQL访问数据库2.实验目的熟悉通过嵌入式SQL〔主语言C语言〕编程访问数据库3

实验平台3.1

操作系统:

Windows2000或者WindowsXP

注:使用Professional版的操作系统建议安装数据库管理系统的教学版,Server版的操作系统建议安装数据库管理系统的企业版。3.2

数据库管理系统:

SQLServer2000数据库管理系统4

实验内容及要求内容:熟悉RDBMS的预编译程序。掌握SQLServer2000的预编译程序NSQLPREP.EXE的使用〔以课本例题1进行调试〕。要求:在本报告中列出程序代码及注释,保证程序能正确编译运行。5.实验内容与完成情况:嵌入式SQL的C语言应用程序在VC++6.0、SQLServer2000环境下的调试可分为五步:第一步环境初始化;第二步预编译;第三步编译;第四步连接;第五步运行。1、环境初始化

(1)将文件夹devtools复制到SQLServer的系统目录C:\ProgramFiles\MicrosoftSQLServer\〔或在安装MicrosoftSQLServer2000时选择安装DevelopmentTools,为使用嵌入式SQL语言准备必要的头文件和库文件。〕

(2)初始化VisualC++6.0编译器环境。在命令行方式下运行文件\MicrosoftVisualStudio\VC98\Bin\vcvars32.bat。运行文件\MicrosoftVisualStudio\VC98\Bin\vcvars32.bat。本人直接是由附件里的运行程序直接运行

(3)初始化SQLServer的预编译环境。在命令行方式下运行文件:C:\ProgramFiles\MicrosoftSQLServer\DEVTOOLS\SAMPLES\ESQLC\setenv.bat。本人直接是由附件里的运行程序直接运行

(4)VC++6.0环境配置。具体配置分为如下三步:

①单击菜单中Tools(工具)->options〔选择〕->directories〔目录〕->IncludeFiles:添加C:\ProgramFiles\MicrosoftSQLServer\devtools\include。将SQLserver自带的用于数据库开发的头文件包含到工程环境中。

②Tools(工具)->options〔选择〕->directories〔目录〕->LibFiles:添加C:\ProgramFiles\MicrosoftSQLServer\devtools\x861ib。将开发用到的包包含到工程中。

③project〔工程〕->Settings〔设置〕->Link->Object〔对象〕/LibraryModules〔库模块〕,添加库文件:SQLakw32.lib,Caw32.lib。这两个文件之间用空格分开。注意:在VC++6.0中要先创立一个"WIN32ConsoleApplication"的Proiect,才可以做该设置。2、预编译1〕复制ESQL预编译文件及库文件C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQLServer的预处理程序是nsqlprep.exe。nsqlprep.exe在SQLServer安装日录的MSSQL\Binn下。假设SQLServer数据库采用的是默任安装方式,那么需要把nsqlprep.exe、SQLAIW32.DLL、SQLAKW32.DLL三个文件拷贝到MSSQL\Binn目录下。2〕将动态链接库SQLAKW32.dll,SQLAIW32.dll文件拷贝到操作系统目录下的子目录C:\WINDOWS\system32中。3〕创立嵌入式SQL的C源文件Esql.c#include<stdio.h>#include<stdlib.h>EXECSQLBEGINDECLARESECTION;/*主变量说明开始*/chardeptname[22];charHSno[10];charHSname[22];charHSsex[4];intHSage;intNEWAGE;longSQLCODE;EXECSQLENDDECLARESECTION;/*主变量说明结束*/EXECSQLINCLUDEsqlca;/*定义SQL通信区*//*************************************************************************/intmain(void)/*C语言主程序开始*/{intcount=0;charyn;/*变量yn代表yes或no*/printf("Pleasechoosethedepartmentname(CS/MA/IS):");scanf("%s",deptname);/*为主变量deptname赋值*/EXECSQLCONNECTTOStudent;/*连接数据库STUDENTDb*/EXECSQLDECLARESXCURSORFOR/*定义游标*/SELECTSno,Sname,Ssex,Sage/*SX对应语句的执行结果*/FROMStudentWHERESDept=:deptname;EXECSQLOPENSX;/*翻开游标SX便指向查询结果的第一行*/for(;;)/*用循环结构逐条处理结果集中的记录*/{EXECSQLFETCHSXINTO:HSno,:HSname,:HSsex,:HSage;/*推进游标,将当前数据放入主变量*/if(sqlca->sqlcode!=0)/*sqlcode!=0,表示操作不成功*/{printf("数据处理结束!");break;/*利用SQLCA中的状态信息决定何时退出循环*/}if(count++==0)/*如果是第一行的话,先打出行头*/printf("\n%-10s%-22s%-4s%-10s\n","Sno","Sname","Ssex","Sage");printf("%-10s%-22s%-4s%-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;/*断开数据库连接*/}4〕关闭C源文件MyEsql.c,并将其备份,然后更改源文件的扩展名为“.sqc”。5〕在命令行下运行ESQL预编译程序nsqlprep.exe程序:nsqlprepMyEsql.sqc假设运行成功,那么生成MyEsql.c,将该文件添加到VC工程中编译即可。6〕编译,连接与运行

在VC++6.0中创立一个"WIN32ConsoleApplication"的Proiect,然后将预编译生成的c文件参加Proiect,编译连接即可生成访问SQLServer的可执行程序。6.出现的问题:实验上机前,因为个人电脑安装C++在D盘,所以实验初始化Vis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论