嵌入式SQL实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 嵌入式SQL和ODBC的使用实验目的
1.熟悉ODBC的配置和使用
2.熟悉嵌入式SQL编程
3.巩固SQL的知识
实验平台
1.OS:
WindowsXP
2.DBMS:
SQLServer2000
piler:
Visual C++ 6.0
预备知识
1)嵌入式SQL编程:
嵌入式SQL由SQL语句和C/C++代码组成。其中SQL语句由预处理器翻译成C或C++的源代码。对预处理后的源代码进行编译、连接生成可执行程序后方可运行。
●SQL预处理器
SQLServer的预处理程序是nsqlprep.exe。其常用的语法格式如下:
nsqlprep 程序文档名
⏹nsqlprep详细的语法格式以及参数意义,请看联机帮助。
经查阅联机帮助,nsqlprep的语法格式如下:
nsqlprep program_file_name [/SQLACCESS | /NOSQLACCESS]
[/FLAGGER {ENTRY | NONE}] [/DB [server_name.]database_name
/PASS {login[.password] | $INTEGRATED}] [/BIND file_name]
[/MSG file_name] [/NOLOGO] [/PLAN name] [/NOLINES]
[/user_defined_option]
⏹要求程序文档名的后缀为.sqc,可以省略。
⏹预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档名同一个
路径下
nsqlprep.exe在SQLServer的安装目录的MSSQL\Binn下。
在本机中SQLServer的安装目录是C:\Program Files\Microsoft SQL Server,nsqlprep.exe在C:\Program Files\Microsoft SQL Server\MSSQL\Binn。由于默认的安装方
式(典型安装)并没有安装应用程序nsqlprep.exe,因此,需要把本机中E:\院内学习工作\大三\数据库\SQLServer2000个人版\x86\binn目录下的内容拷贝到该目录下。
连接方式
经预处理后的c文件就可以用c的编译器进行编译连接了。
使用Visual C++ 6.0进行编译连接,连接方式是动态连接,用到动态链接库SQLakw32.dll,sqlaiw32.dll;此两文件已经随同binn.rar的其他内容,被拷贝到C:\Program Files\Microsoft SQL Server\MSSQL\Binn下;但仍然需要把该路径加到系统的路径变量中,以使得程序运行时能找到这两个文件。
方法1:把该两文件拷贝到操作系统目录下的子目录system32中
方法2:把C:\Program Files\Microsoft SQL Server\MSSQL\Binn加到系统环境变量path中。“我的电脑”->“属性”->“高级”->“环境变量”->“path,编辑”,如下图所示:
在变量值中加入该路径值;注意,路径间用分号”;”分开。
在实验过程中发现如果只做第二步,在之后的运行过程中会报错,只有将方法一也执行了这个连接的准备工作才算是正式完成。
2)通过ODBC访问数据库:
配置ODBC,为SQL Server添加数据源。如下图所示:
初始化环境:
1.SQL Server2000为其嵌入式SQL提供了一些特殊的接口;默认的安装方式(典型安装)并没有安装这些接口;因此,需要把devtools.rar解压到SQLServer的系统目录下(注意,不是安装目录);本机是把操作系统安装在C盘,则SQLServer的系统目录则是C:\Program Files\Microsoft SQL Server。
2.初始化SQL Server的预编译环境。
初始化Visual C++ 6.0 编译器环境,运行文件:\Microsoft Visual Studio\VC98\Bin\VCV ARS32.BAT
这个过程要在DOS下运行才有效,即找vcvars32.bat的路径,在DOS下运行。
具体步骤如下:
⏹初始化SQLServer的预编译环境,运行文件:\devtools\samples\esqlc\setenv.bat。
运行方式与vcvars32.bat相同,结果如下:
3.初始化Visual C++ 6.0环境。
⏹Tools->options->directories->Include
Files: C:\Program Files\Microsoft SQL Server\devtools\include
⏹Tools->options->directories->Lib
Files:C:\Program Files\Microsoft SQL Server\devtools\x86lib
注意:这些路径需要设为第一项。如下图所示:
⏹Project->Settings->Link->Object/Library Modules,添加库文件:
SQLakw32.lib,Caw32.lib
注意,两个文件之间用空格分开。
以上部分均在上机课上在师姐的指导下完成。
实验活动
1.阅读和分析程序esql.sqc,解释程序的主要内容和主要数据结构。
程序的主要内容:
嵌入式SQL的使用,将SQL嵌入到C语言中,在SQL的数据库中通过SELECT 语句获取数据,并将获得的信息通过主变量传递给主语言并打印输出。
给出的程序中将程序连接到WXF的SQL服务器上的pubs数据库上,查询满足以下SELECT语句的数据信息:
select EmployeeID from orders where OrderID = 345
查询得到的结果由主变量EmployeeID传给主语言(C语言),C语言得到数据信息后
打印输出。
程序分为以下几块:
1)主变量的声明:
在EXEC SQL BEGIN DECLARE SECTION;和EXEC SQL END DECLARE
SECTION;之间声明主变量EmployeeID。
2)连接到DBMS:
连接到数据库的管理系统以便从中查询登陆的数据库。连接到数据库的语法
为:
EXEC SQL CONNECT TO SQLServer.DataBaseName USER logName.passwd
3)查错:
为了更好的判断和查找错误以修改程序,所以在每次执行完SQL语句后都应
该对sqlca所返回的状态值加以判断。若sqlcode等于0,则输出建立成功信息,