实验4嵌入式SQL和ODBC的使用
下载后可任意编辑 实验4 嵌入式SQL和ODBC的使用 实验人:田超(31311039) 黄伟(31311064) 实验目的 1. 熟悉ODBC的配置和使用 2. 熟悉嵌入式SQL编程 3. 巩固SQL的知识 实验平台 1. OS: WindowsXP 2. DBMS: SQLServer2000 3. Compiler: Visual C++ 6.0 预备知识 1)嵌入式SQL编程: 嵌入式SQL由SQL语句和C/C++代码组成。其中SQL语句由预处理器翻译成C或C++的源代码。对预处理后的源代码进行编译、连接生成可执行程序后方可运行。 l SQL预处理器 SQLServer的预处理程序是nsqlprep.。其常用的语法格式如下: nsqlprep 程序文档名 n 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] n 要求程序文档名的后缀为.sqc,可以省略。 n 预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档名同一个路径下 nsqlprep.在SQLServer的安装目录的 MSSQL\Binn下。 在本机中SQLServer的安装目录是C:\Program Files\Microsoft SQL Server, nsqlprep.在C:\Program Files\Microsoft SQL Server\MSSQL\Binn。由于默认的安装方式(典型安装)并没有安装应用程序nsqlprep.,因此,需要把本机中E:\院内学习工作\大三\数据库\SQLServer2000个人版\x86\binn目录下的内容拷贝到该目录下。 l 连接方式 经预处理后的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的预编译环境。 n 初始化Visual C++ 6.0 编译器环境,运行文件:\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT 这个过程要在DOS下运行才有效,即找vcvars32.bat的路径,在DOS下运行。 具体步骤如下: n 初始化SQLServer的预编译环境,运行文件:\devtools\samples\esqlc\setenv.bat。 运行方式与vcvars32.bat相同,结果如下: 3. 初始化Visual C++ 6.0环境。 n Tools->options->directories->Include Files: C:\Program Files\Microsoft SQL Server\devtools\include n Tools->options->directories->Lib Files:C:\Program Files\Microsoft SQL Server\devtools\x86lib 注意:这些路径需要设为第一项。如下图所示: n 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) 主变量的声明: 在C SQL BEGIN DECLARE SECTION;和C SQL END DECLARE SECTION;之间声明主变量EmployeeID。 2) 连接到DBMS: 连接到数据库的管理系统以便从中查询登陆的数据库。连接到数据库的语法为: C SQL CONNECT TO SQLServer.DataBaseName USER logName.passwd 3) 查错: 为了更好的推断和查找错误以修改程序,所以在每次执行完SQL语句后都应该对sqlca所返回的状态值加以推断。若sqlcode等于0,则输出建立成功信息,否则报错。 4) 执行查询: 在这里嵌入SQL的查询语句C SQL select EmployeeID INTO :EmployeeID from ord