实验一 熟悉Power Designer………………. 2
一、实验目的
1、掌握安装并破解PD的方法。
2、通过阅读和分析应用实例“学生选课系统CDM”,了解和熟悉Power Designer CDM及其相关知识。
3.掌握运用Power Designer工具建立CDM的方法 。
4.初步掌握从Power Designer CDM生成相应的PDM的方法。
二、实验内容及实验步骤
1、PD环境的介绍
Power Designer的4种模型文件:
(1) 概念数据模型 (CDM)
CDM 表现数据库的全部逻辑的结构,与任何的软件或数据储藏结构无关。 一个概念模型经常包括在物理数据库中仍然不实现的数据对象。 它给运行计划或业务活动的数据一个正式表现方式。
(2)物理数据模型 (PDM) : PDM 叙述数据库的物理实现。
藉由 PDM ,你考虑真实的物理实现的细节。你能修正 PDM 适合你的表现或物理约束。
(3)面向对象模型 (OOM)
一个OOM包含一系列包,类,接口 , 和他们的关系。 这些对象一起形成所有的 ( 或部份) 一个软件系统的逻辑的设计视图的类结构。 一个OOM本质上是软件系统的一个静态的概念模型。
(4)业务程序模型 (BPM)
BPM 描述业务的各种不同内在任务和内在流程,而且客户如何以这些任务和流程互相影响。BPM 是从业务合伙人的观点来看业务逻辑和规则的概念模型,使用一个图表描述 程序,流程,信息和合作协议之间的交互作用
2、创建CDM(以学生选课系统为例)
(1)新建一个CDM,命名为CssCdm(css,Course SelectionSystem )
(2)创建“学生”、“课程”实体和“选课”联系,并命名
(3)为各实体和联系创建属性
学生(学号,姓名,性别,年龄)
课程(课程号,课程名,学分)
选课(学号,课程号,成绩)
(3)为各实体和联系创建属性
学生(学号,姓名,性别,年龄)
课程(课程号,课程名,学分)
选课(学号,课程号,成绩)
每一条属性的M\P\D 分别代表:
Mandatory(是否允许为空)
Primary Identifier(标识符,类似于数据库中的主键)
Displayed(是否显示在实体图表符号中)
Domain 相当于自定义数据类型
(4)创建实体间的联系
“学生”和“教师”之间为多对多(m:n)关系,
可将他们转化为两个一对多(1:m)关系
(5)生成CDM
3、将CDM转化为PDM
一、实验目的
SQL Server 2000是Mircosoft公司推出的关系型网络数据库管理系统,是一个逐步成长起来的大型数据库管理系统。
本次实验了解SQL Server 2000的安装过程,熟悉SQL Server 2000软件环境。学会安装SQL Server 2000的安装。
二、实验内容
1.安装Microsoft的数据库服务软件SQL Server 2000:
运行服务器目录SQL2000下的可执行文件autorun.exe,进行SQL Server 2000的安装。安装主界面如图1-1所示。
图1-1
选择安装SQL Server 2000组件,出现组件安装界面,如图1-2所示。
图1-2
选择安装数据库服务器,进入SQL Server 2000的安装向导,如图1-3所示。
图1-3
点击“下一步”,到计算机名称对话框,如图1-4所示。
图1-4
“本地计算机”是默认选项,本地计算机的名称就显示在上面,点击“下一步”,出现安装选择对话框,如图1-5所示。
图1-5
选择“创建新的SQL Server实例,或安装客户端工具”,点击“下一步”,出现用户信息对话框,如图1-6所示。
图1-6
输入姓名和公司名称后,点击“下一步”,出现软件许可协议,如图1-7所示。
图1-7
点“是”按钮,出现安装定义对话框,如图1-8所示。
图1-8
选择“服务器和客户端工具”,点击下一步,出现实例名对话框,如图1-9所示。
图1-9
系统提供了“默认”复选框,点击下一步,出现安装类型选择框,如图1-10所示。
图1-10
选择典型,点击“下一步”,出现服务帐户对话框,如图1-11所示。
图1-11
接受系统的缺省值,点击“下一步”,出现身份验证模式窗口,如图1-12所示。
图1-12
接受系统的缺省值,点击“下一步”,出现开始拷贝文件窗口,如图1-13所示。
图1-13
点击“下一步”,开始将文件拷贝到选择的目录中,如图1-14所示。
图1-14
文件拷贝完成后,出现安装结束界面,如图1-15所示。
图1-15
点击“完成”按钮,完成SQL Server 2000的安装。
三、实验任务
1.在计算机上安装数据库软件SQL Server 2000;
2.熟悉软件的使用,SQL Server 2000主菜单如图1-16所示:
图1-16
一、实验目的
SQL Server 2000的启动和管理工作由服务管理器和企业管理器来实现。
本次实验了解SQL Server 2000的启动,熟悉如何在SQL Server 2000图形环境下建立数据库和表。学会安装SQL Server 2000的启动和建库、表的操作。
二、实验内容
1.启动数据库服务软件SQL Server 2000:
在程序菜单中选择Microsoft SQL Server,如图2-1所示:
图2-1
再选中服务管理器,如图2-2所示:
图2-2
点击服务管理器后,出现SQL Server服务管理器,如图2-3所示:
图2-3
点击“开始/继续”按钮,启动SQL Server 2000数据库服务。
启动成功后,在时钟旁边出现一个符号,如图2-4所示。
图2-4
2.在SQL Server 2000中建立数据库:
在程序菜单中选择Microsoft SQL Server,如图2-5所示:
图2-5
再选中企业管理器,如图2-6所示:
图2-6
点击企业管理器后,出现企业管理器的主界面,如图2-7所示:
图2-7
点击左边树状控制栏的+/-号可以打开和关闭SQL Server组中的本地服务项目,在选中数据库服务项目后,单击鼠标右键,出现数据库的菜单,如图2-8所示:
图2-8
点击新建数据库,出现新建数据库窗口,如图2-9所示:
图2-9
输入数据库名称:Test,点击数据文件选项卡,如图2-10所示:
图2-10
在数据文件中,你可以设定数据文件的名称,所在目录以及文件的大小等信息。
完成后点击事务日志选项卡,如图2-11所示:
图2-11
事务日志中,你可以设定日志文件的名称,所在目录以及文件的大小等信息。
接受系统的缺省值,点击确定按钮,完成数据库的新建,如图2-12所示。
图2-12
3.在Test数据库上建立表:
点击数据库Test前面的+号,打开数据库的各种属性,如图2-13所示:
图2-13
选中表的属性,单击鼠标右键,出现表的菜单,如图2-14所示:
图2-14
点击新建表按钮,出现新建表窗口,如图2-15所示:
图2-15
输入列名,数据类型,长度等信息,点击图标,出现选择表名窗口,如图2-16所示:
图2-16
输入表名,点击确定按钮,将新建的表存盘。
三、实验任务
1.用数据库SQL Server 2000的服务管理器启动数据库服务;
2.用数据库SQL Server 2000的企业管理器建立一个数据文件名为demodata、大小50M,日志文件名为demolog、大小25M的新数据库,该数据库名为Demo。
3.在数据库Demo上,建立如下所示的表customer:
字段名 | 类型 | 长度 | 含义 |
customid | varchar | 17 | 顾客编号 |
name | varchar | 10 | 姓名 |
sex | varchar | 2 | 性别 |
age | int | 4 | 年龄 |
xfg | dec | 10,2 | 消费金额 |
address | varchar | 50 | 地址 |
memo | varchar | 100 | 备注 |
一、实验目的
SQL Server 2000的查询分析器是一种特别用于交互式执行SQL语句和脚本的极好的工具。
本次实验了解SQL Server 2000查询分析器的启动,熟悉如何在SQL Server 2000查询分析器中建表、插入记录、查询记录。学会SQL Server 2000的查询分析器中建表、插入记录、查询记录。
二、实验内容
1.启动数据库服务软件SQL Server 2000的查询分析器:
在程序菜单中选择Microsoft SQL Server,如图3-1所示:
图3-1
再选中查询分析器,如图3-2所示:
图3-2
点击查询分析器后,出现连接到SQL Server窗口,如图3-3所示:
图3-3
点击按钮,出现选择服务器窗口,如图3-4所示。
图3-4
选择本地服务(Local),点击确定按钮。
再点击连接到SQL Server窗口的确定按钮。出现SQL查询分析器主界面,如图3-5所示。
图3-5
选择查询菜单,点击更改数据库,如图3-6所示。
图3-6
出现选择数据库窗口,如图3-7所示。
图3-7
选择在上次实验中建立的数据库Test,点确定按钮。
2.在查询分析器中建立表:
在查询分析器的查询窗口中输入SQL语句,如图3-8所示。
图3-8
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-9所示。
图3-9
提示命令成功完成,或者报告出错信息。
3.查询分析器中向表添加数据:
在查询分析器的查询窗口中输入SQL语句,如图3-10所示。
图3-10
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-11所示。
图3-11
1. 从表中查询数据:
在查询分析器的查询窗口中输入SQL语句,如图3-12所示。
图3-12
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-13所示。
图3-13
三、实验任务
1.打开数据库SQL Server 2000的查询分析器,用SQL语言建表student,表结构如下图所示:
字段名 | 类型 | 长度 | 含义 |
id | varchar | 17 | 学生编号 |
name | varchar | 10 | 姓名 |
sex | varchar | 2 | 性别 |
age | integer | 年龄 | |
score | numeric | 6,2 | 总成绩 |
2.用SQL语言向表student插入如下6条记录:
A0001 | 赵一 | 男 | 20 | 580.00 |
B0002 | 钱二 | 女 | 19 | 540.00 |
C0003 | 孙三 | 男 | 21 | 555.50 |
D0004 | 李四 | 男 | 22 | 480.00 |
E0005 | 周五 | 女 | 20 | 495.50 |
F0006 | 吴六 | 男 | 19 | 435.00 |
3. 练习查询语句,查找年龄大于等于20岁,成绩低于500分的记录。
一、实验目的
SQL(Structured Query Language)语言是关系数据库的标准语言。是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询,SQL语言是一个通用的、功能极强的关系数据库语言。
从本次实验开始,我们将详细的学习SQL的DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)。
本次实验了解DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,学会SQL Server 2000的查询分析器中用DDL语言进行对表、索引、视图的增加、删除和改动。
二、实验内容
1. 启动数据库服务软件SQL Server 2000的查询分析器,用如下语句对表进行操作,详细的语法格式参看课本相应章节:
Create Table 建表
Drop Table 删除表
Alter Table 更改表
2. 用如下语句对视图进行操作,详细的语法格式参看课本相应章节:
Create View 建视图
Drop View 删除视图
3. 如下语句对索引进行操作,详细的语法格式参看课本相应章节:
Create Index 建立索引
Drop Index 删除索引
三、实验任务
1. 打开数据库SQL Server 2000的查询分析器,用Create Table建表aa,表结构如下所示:
字段名 | 类型 | 长度 | 含义 |
Aa1 | Varchar | 20 | 字段1 |
Aa2 | Int | 字段2 | |
Aa3 | Dec | 10,2 | 字段3 |
2.用Create Table建表bb,表结构如下所示:
字段名 | 类型 | 长度 | 含义 |
Bb1 | Varchar | 30 | 字段1 |
Bb2 | Int | 字段2 | |
Bb3 | Dec | 6,2 | 字段3 |
3.用Drop Table删除表aa。
4.用Alter Table修改表bb,添加一个字段Bb4,类型Varchar,长度20。
5.用Create View对表Bb的Bb1和Bb4建立一个视图Viewbb,字段名为Viewbb1和Viewbb2。
6.Drop View删除视图Viewbb。
7.用Create Index对表Bb的Bb3字段建立一个升序索引,索引名Indexbb。
8.用Drop Index删除索引Indexbb。
9.将以上的SQL语言存盘,以备老师检查。
一、实验目的
SQL的数据操纵功能通过DML(数据库操作语言)实现。DML包括数据查询和数据更新两种数据操作语句。其中,数据查询指对数据库中的数据查询、统计、分组、排序等操作;数据更新指数据的插入、删除和修改等数据维护操作。
本次实验了解DML语言的INSERT、UPDATE、DELETE对数据的操作,学会SQL Server 2000的查询分析器中用DML语言对表中的数据进行插入、删除和修改。
二、实验内容
1. 启动数据库服务软件SQL Server 2000的查询分析器,用INSERT语句对表进行插入操作,语法格式如下:
Insert Into <表名> [(<属性列1>[,<属性列2>]…)]
Values (<常量1>[,<常量2>]…);
2. 用UPDATE语句对表中已有的记录进行修改,语法格式如下:
Update <表名> Set <列名>=<表达式>[,<列名>=
<表达式>][,…n] [Where <条件>];
3. 用DELETE语句对表中已有的记录进行删除,语法格式如下:
Delete From <表名> [Where <条件>];
三、实验任务
1. 打开数据库SQL Server 2000的查询分析器,用Create Table建表cc,表结构如下所示:
字段名 | 类型 | 长度 | 含义 |
Cc1 | Varchar | 20 | 字段1 |
Cc2 | Int | 字段2 | |
Cc3 | Dec | 10,2 | 字段3 |
Cc4 | Varchar | 60 | 字段4 |
2. 用INSERT语句对表cc插入6条记录
Cc1 | Cc2 | Cc3 | Cc4 |
赵一 | 20 | 580.00 | 重邮宿舍12-3-5 |
钱二 | 19 | 540.00 | 南福苑5-2-9 |
孙三 | 21 | 555.50 | 学生新区21-5-15 |
李四 | 22 | 480.00 | 重邮宿舍8-2-22 |
周五 | 20 | 495.50 | 学生新区23-4-8 |
吴六 | 19 | 435.00 | 南福苑2-5-12 |
3. 用UPDATE语句,将表cc中cc2小于等于20的记录,把cc3字段加5。
4. 用DELETE语句将表cc中cc2大于等于20和cc3大于等于500的记录删除。
5. 将以上的SQL语言存盘,以备老师检查。
一、实验目的
DML的数据查询指对数据库中的数据查询、统计、分组、排序等操作。查询语句可以分为简单查询、连接查询、嵌套查询和组合查询。
本次实验了解DML语言的SELECT语句对数据的查询,学会SQL Server 2000的查询分析器中用DML语言对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。
二、实验内容
1.启动数据库服务软件SQL Server 2000的查询分析器,用SELECT语句对表进行简单查询操作,整个查询过程只涉及到一个表,是最基本的查询语句。
语法格式如下:
Select <目标列组> From <数据源> [Where <元组选择条件>]
[Group by <分组列> [Having <组选择条件>]]
[Order by <排序列1> <排序要求> [, …n]]
2.用SELECT语句对表进行连接查询操作,连接查询涉及被连接和连接两个表,所以数据源一般为多个表。用来连接两个表的条件称为连接条件,一般格式为:
[<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>
其中比较运算符主要有:=、>、<、>=、<=、!=。
3.用SELECT语句对表进行嵌套查询操作,一个Select…From…Where语句称为一个查询块,将一个查询块嵌套在另一个查询块的Where子句或Having短语的条件中的查询,就是嵌套查询。主要有使用In操作符、使用比较运算符的嵌套查询方式。
4.用SELECT语句对表进行组合查询操作,将SELECT语句的查询结果集再进行集合运算就构成了SQL的组合查询。组合查询操作符有Union(并操作)、Intersect(交操作)和Minus(差操作)。
三、实验任务
1.打开数据库SQL Server 2000的查询分析器,用Create Table建表Student,表结构如下所示:
字段名 | 类型 | 长度 | 含义 |
ID | Varchar | 20 | 学号 |
Name | Varchar | 10 | 姓名 |
Age | Int | 年龄 | |
Department | Varchar | 30 | 所在系 |
2.用Create Table建表Course,表结构如下所示:
字段名 | 类型 | 长度 | 含义 |
CourseID | Varchar | 15 | 课程号 |
CourseName | Varchar | 30 | 课程名 |
CourseBefore | Varchar | 15 | 先行课 |
3.用Create Table建表Choose,表结构如下所示:
字段名 | 类型 | 长度 | 含义 |
ID | Varchar | 20 | 学号 |
CourseID | Varchar | 30 | 课程号 |
Score | Dec | 5,2 | 成绩 |
4.用INSERT语句向表Student中插入3条记录:
ID | Name | Age | Department |
00001 | 张三 | 20 | 计算机系 |
00002 | 李四 | 19 | 计算机系 |
00003 | 王五 | 21 | 计算机系 |
5.INSERT语句向表Course中插入3条记录:
CourseID | CourseName | CourseBefore |
C1 | 计算机引论 | - |
C2 | PASCAL语言 | C1 |
C3 | 数据结构 | C2 |
6.用INSERT语句向表Choose中插入7条记录:
ID | CourseID | Score |
00001 | C1 | 95 |
00001 | C2 | 80 |
00001 | C3 | 84 |
00002 | C1 | 80 |
00002 | C2 | 85 |
00003 | C1 | 78 |
00003 | C3 | 70 |
7.用SELECT语句求计算机系学生的学号和姓名。
8.用SELECT语句求学生的学号、姓名、选的课程名及成绩。
9.用SELECT语句求C1课程的成绩低于张三的学生的学号和成绩。
10.用SELECT语句求选了C2课程并且也选了C3课程的学生的学号。
11.用select 语句求计算机系年龄在20岁以下的学生的详细信息.
12. 查询所有学生的详细信息,结果按学号降序排列。
13.查询每个系学生的人数。
14.查询每个系学生的平均年龄。
15.查询计算机系学生的最大年龄和最小年龄。
16,查询每个学生的平均分。
17.查询每个学生的选课门数。
18.查询每门课程的选课人数。
19,查询选修课程c1并且成绩在80分以上的学生的学号。
20.查询所有选修了才c2课程的学生的学号。
21.查询所有选了课的学生的学号。
22.查询选修人数大于2的课程号。
23.查询选修人数大于2并且平均成绩大于80分的课程
一、实验目的
SQL语言是数据库语言领域中的主流语言,对SQL语言的掌握程度直接关系到数据库学习的好坏。
本次实验通过一个SQL语言的综合练习,对前面的学习的内容进行复习,并加以巩固,希望大家对SQL语言有一个较好的掌握。
二、实验内容
1. 启动数据库服务软件SQL Server 2000的查询分析器,用Create Table建表;
2. 用Insert Into向表中插入记录;
3. 用Create Index在表上建立索引;
4. 用Create View建立视图;
5. 用SELECT语句进行各种查询操作。
三、实验任务
1.打开数据库SQL Server 2000的查询分析器,用Create Table建表Exam,表结构如下图所示:
字段名 | 类型 | 长度 | 含义 |
Id | varchar | 17 | 学生编号 |
Name | varchar | 10 | 姓名 |
Sex | varchar | 2 | 性别 |
Age | integer | 年龄 | |
score | numeric | 6,2 | 总成绩 |
address | varchar | 50 | 地址 |
Memo | varchar | 100 | 备注 |
2.用Insert Into语句向Exam表中添加6条记录,记录内容如下图所示:
A0001 | 赵一 | 男 | 20 | 580.00 | 重邮宿舍12-3-5 | 学习委员 |
B0002 | 钱二 | 女 | 19 | 540.00 | 南福苑5-2-9 | 班长 |
C0003 | 孙三 | 男 | 21 | 555.50 | 学生新区21-5-15 | 优秀共青团员 |
D0004 | 李四 | 男 | 22 | 480.00 | 重邮宿舍8-2-22 | 暂无相关信息 |
E0005 | 周五 | 女 | 20 | 495.50 | 学生新区23-4-8 | 暂无相关信息 |
F0006 | 吴六 | 男 | 19 | 435.00 | 南福苑2-5-12 | 暂无相关信息 |
1. 对表Exam的Score字段建立一个名为IndexScore的升序索引。
4.建立视图ViewExam,字段ViewExam1和ViewExam2分别对应表Exam的Name和Address字段。
5.某电信局计费部门涉及如下表
三个表的字段含义如下:
Jm表:
Jmbm | 局名编码 |
Jmhz | 局名汉字说明 |
Jmbz | 局名标志 |
Zjm表:
Zjmbm | 子局名编码 |
Zjmhz | 子局名汉字说明 |
Jmbm | 局名编码 |
Zjmbz | 子局名标志 |
Dhshow表:(其它字段与本次测验无关,未给出相关含义)
Dhh | 电话号码 |
Sl1 | 长话费 |
Sl3 | 市话费 |
Sl39 | 地区编码 |
Sl40 | 子局名编码 |
表间关联:Jm表中的jmbm和zjm表中的jmbm是相等的;
Zjm表中的zjmbm和dhshow表中的sl40是相等的。
表说明:dhshow表中的sl1和sl3字段的计费单位是币人民分。
请插入适当数据,然后完成下列查询
6. 用SELECT语句,求某一地区长话消费平均是多少分人民币。
7. 用SELECT语句,求某一地区市话消费总额大于10元人民币并且长话消费不为零的电话号码。
8. 用SELECT语句,查询每一电话局各包含哪些子局?
9. 用SELECT语句,查询每一子局的长话费总额?
10. 用SELECT语句,查询每一电话局的长话费总额?
实验九 数据库设计
一、学时
4学时
二、实验类型
综合、设计
三、实验目的
学习使用数据库设计工具进行数据库的设计,并熟悉数据库的设计的基本方法和步骤,搞清数据库设计各阶段的任务
四、实验准备
1.熟悉数据库设计工具的设计环境;
2.复习SQL语言命令;
3.复习E-R图的绘制;
4.复习数据库设计的方法、步骤
六、实验方法及步骤
1. 对一小型数据库应用系统进行需求分析;
2. 绘制E-R图;
3. 将E-R模型向数据模型转换;
4. 创建数据库,定义基本表
七、实验内容
系统数据库的设计;
实验目的
1. 熟悉嵌入式SQL编程
2. 巩固SQL的知识
实验平台
1. OS:
WindowsXP
2. DBMS:
SQLServer2000
3. Compiler:
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。
● 连接方式
经预处理后的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\VCVARS32.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,解释程序的主要内容和主要数据结构。
数据结构:
主要为在数据库中存储的表,及针对表进行的查找。
2. 对程序esql.sqc作适当的修改,使之可以在本地系统上可以运行。进行预处理、编译、连接(lib连接),查看运行结果。
1)修改:
只需要对连接的服务器及数据库进行修改即可:
EXEC SQL CONNECT TO SKY.pubs USER abc.abc;
2)进行预处理:
将esql.sqc文件放在C:\Program Files\Microsoft SQL Server\MSSQL\Binn目录下,运行cmd,进入C:\Program Files\Microsoft SQL Server\MSSQL\Binn目录,用nsqlprep esql.sqc的方式运行该文件,可以在C:\Program Files\Microsoft SQL Server\MSSQL\Binn中找到预编译后生成的.c文件。
编写程序,使用嵌入式SQL实现如下的功能:
1. 编写程序,创建下列关系表,并插入数据。
create table provider (
SNO char(5) primary key,
SNAME char(10) not null,
STATUS int,
CITY char(10)
);
insert into provider values('S1','精益','20','天津');
insert into provider values('S2','胜锡','10','北京');
insert into provider values('S3','东方红','30','天津');
insert into provider values('S4','丰泰盛','20','天津');
insert into provider values('S5','为民','30','上海');
insert into provider values('S6','通天','25',null)
说明:以上两个步骤在两种方法中都是在同一个程序中实现,关键部分用黄色标出,exp为在企业管理器中新建的数据库。
源程序如下:
A)用嵌入式SQL实现:
#include
#include
EXEC SQL INCLUDE sqlca;
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
//主变量
char sno[5];
char sname[10];
int status;
char city[10];
short cityInd;//指示变量
EXEC SQL END DECLARE SECTION;
printf("This is my Embedded SQL for C application\n");
EXEC SQL CONNECT TO SKY.exp USER sa.sa;//连接到数据库
if (SQLCODE == 0)
{
printf("Connection to SQL Server established\n");
}
else
{
// 连接DBMS错误
printf("ERROR: Connection to SQL Server failed\n");
return (1);
}
//下面为程序的主体部分
EXEC SQL create table provider (
sno char(5) primary key,
sname char(10) not null,
status int,
city char(10)
);
EXEC SQL insert into provider values('S1','精益','20','天津');
EXEC SQL insert into provider values('S2','胜锡','10','北京');
EXEC SQL insert into provider values('S3','东方红','30','天津');
EXEC SQL insert into provider values('S4','丰泰盛','20','天津');
EXEC SQL insert into provider values('S5','为民','30','上海');
EXEC SQL insert into provider values('S6','通天','25',null);
EXEC SQL WHENEVER SQLERROR GOTO error;//错误处理
EXEC SQL WHENEVER NOT FOUND GOTO done;
EXEC SQL DECLARE providerCursor CURSOR FOR
SELECT sname, city
FROM provider;
EXEC SQL OPEN providerCursor ;
for ( ; ; ) {
/* Fetch next row of the result table */
EXEC SQL FETCH providerCursor INTO :sname,:city:cityInd;
/* display data */
printf ("Sname:%s ",sname);
if ( cityInd< 0)//通过设置指示变量,并判断指示变量的值<0来确认和输出null值
printf ("City:NULL\n");
else
printf ("City:%s\n",city);
}
error:
printf ("SQL error %d\n",sqlca->sqlcode);//若照书上写sqlca.sqlcode编译报语法错
done:
/* Close the cursor before completing*/
EXEC SQL WHENEVER SQLERROR continue;
EXEC SQL CLOSE providerCursor;
EXEC SQL COMMIT WORK RELEASE;
//断开连接
EXEC SQL DISCONNECT ALL;
return 0;
}
¥29.8
¥9.9
¥59.8