一、实验目的
熟悉通过嵌入式SQL(主语言为C语言)编程访问数据库。
二、实验平台和实验工具
- 在KingbaseES数据库管理系统上,通过C语言编写访问数据库的应用程序来对数据库进行各种数据操作。
- 编程工具VC++6.0
- 另需要32位KingbaseES的lib库,后会详细说明。
三、实验内容和要求
熟悉RDBMS的预编译程序。通过嵌入式SQL编程访问数据库的基本步骤,
对学生课程数据库中的表,完成下面功能(你也可以自己给出功能要求):
查询某一门课程的信息。要查询的课程由用户在程序运行过程中指定,放在主变量中。
查询选修某一门课程的选课信息,要查询的课程号由用户在程序运行过程中指定,放在主变量中,然后根据用户的要求修改其中某些记录的成绩字段。
要求:提交源程序并标识必要的注释。保证程序能正确编译和运行,认真填写实验报告。
1.嵌入式SQL
要求:将一段连续的SQL操作写成嵌入到C程序中的程序,调试程序,使得程序能完成一项复杂的数据处理功能,并提交程序。
嵌入式SQL由SQL语句和C/C++代码组成。其中SQL语句由预处理器翻译成C或C++的源代码。对预处理后的源代码进行编译、链接生成可执行程序后方可运行。
2.KingbaseES预处理器
KingbaseES的预处理程序是esqlc.exe。其常用的语法格式如下:
- esqlc详细的语法格式以及参数意义,请参阅联机帮助。
- 要求程序文档名的后缀为.pc,可以省略。
- 预编译后得到的文档,与程序文档同名,后缀为.c;放在与程序文档同一个路径下。
esqlc.exe存在KingbaseES的安装目录的Basesoft\KingbaseES\4.1\bin下。例如,KingbaseES的安装目录是C:\Program Files,那么eslqc.exe则在C:\Program Files\Basesoft\KingbaseES\ 4.1\bin下。
注意:在安装SQL Server时并不会同时安装预编译应用程序nsqlprep.exe,需要将此文件另拷贝至安装目录下;而KingbaseES在安装时会同时安装此文件,因此不需要另外拷贝
3.预编译
用KingbaseES预处理程序esqlc.exe对含有嵌入式SQL的程序文件进行预编译。如果编写的主程序文件名称为authid.pc,存放在C:\Program Files\Basesoft\KingbaseES\4.1\bin目录下,则预编译具体方法如下:
在linux环境下
% ecsys authid.pc -o authid.c -I /usr/local/kingbase/include
在windows环境下
esqlc -I “C:\Program Files\Basesoft\KingbaseES\4.1\include” -o authid.c authid.pc
4.编译和链接
当编译预处理过的C程序时,编译器需要查找ESQLC头文件,所以在编译时需要指定这些文件的路径。在链接时,该C程序需要链接esql.lib库,所以还要指定这个库文件的路径。
下面分别给出在linux和windows环境下,编译和链接该C程序的方法。
在linux环境下
假定预编译完成后生成的C程序为authid.c。在linux环境下编译和链接该C程序的具体方法如下:
1.编译.c程序
% gcc authid.c -c -o authid.o -I /usr/local/kingbase/include
2.链接,生成可执行文件
% gcc authid.o -o basetab.out -I /usr/local/kingbase/include -L /usr/local/kingbase/lib -lecsys –lpq
在windows环境下
我们假定预编译生成的authid.c存放在Basesoft\KingbaseES\4.1\bin目录下。我们使用命令行形式对该程序进行编译和链接,具体方法如下:
1.编译.c程序
cl /c /DWIN32 /I"C:\Program Files\Basesoft\KingbaseES\4.1\include" /Foauthid.obj authid.c
2.链接,生成可执行文件
link /out:authid.exe authid.c "C:\Program Files\Basesoft\KingbaseES\4.1\lib\esql.lib
四、实验步骤
1.下载相关文件
VC++的32位控制台程序,与64位Kingbase的lib文件不兼容。需要下载32位kingbase的库文件。
下载32位的Kingbase