数据库原理与应用
实验指导书
专 业:
班 级:
学 号:
姓 名:
浙 江 传 媒 学 院
电子信息学院
2014-2
一、实验教学任务与目的:
《数据库技术与应用 》课程是电子信息类各专业的必修课。实验的目的是为了配合课堂教学,进一步强化对数据库原理的理解。实验的任务是要结合SQL语言实验和SQL SERVER数据库系统, 熟练掌握和深入理解课堂教学内容。要求.理解SQL定义功能;熟练掌握SQL操纵功能;了解SQL数据控制功能;熟练掌握SQL SERVER对数据库的管理和操作;
二、实验项目内容、基本要求与学时分配
| 序号 | 实验项目 名称 | 实验学时 | 实验类别 | 实验类型 | 实验要求 | 实验内容提要 |
| 1 | 实验1 SQL Server 2000 使用 | 3 | 专业基础 | 验证 | 必做 | 熟悉SQL Server 2000工具的各项功能和组件。掌握使用企业管理器创建与管理数据库及数据表的创建与管理,数据库的插入、删除和更新 |
| 2 | 实验2 数据库的定义和操作 | 2 | 专业基础 | 综合 | 必做 | 使用SQL Server企业管理器创建数据库、表、修改表结构,数据库的插入、删除和更新 |
| 3 | 实验3 数据库查询 | 3 | 专业基础 | 综合 | 必做 | 使用SQL进行简单查询、连接查询、嵌套查询、统计查询 |
| 4 | 实验4 存储过程和触发器编写 | 2 | 专业基础 | 综合 | 必做 | 熟练掌握存储过程的建立、修改、删除等基本操作。熟练掌握触发器的建立、修改、删除等基本操作 |
| 5 | 实验5 数据库编程 | 6 | 专业基础 | 综合 | 必做 | 掌握Visual Basic的基本操作。掌握ActiveX DataObjects(简称ADO)数据控件和ADO数据对象连接SQL Server数据库的方法。掌握VB控件与ADO数据控件的绑定方法。掌握ODBC数据源创建方法,使用ODBC数据源驱动ADO数据控件的方法。 |
1.根据实验指导书的内容完成实验并按要求填写操作内容。
2.评分办法:实验纪律10%,实验完成情况30%,实验报告60%。
3.实验成绩占本课程总分的10%。
四、参考文献
[1]严冬梅.数据库应用与实验指导.北京:清华大学出版社,2011年10月.
[2]王珊.数据库系统概论(第四版)学习指导与习题解析.北京:高等教育出版社,2008年6月.
[3]严晖,刘卫国.数据库技术与应用实践教程——SQL Server.北京:清华大学出版社,2007年1月.
执笔人:殷伟凤
教研室:电子信息工程教研室
编制日期: 2014年2月
实验1 SQL Server2000使用
一、实验目的
1、熟悉SQL Server 2000工具的各项功能和组件。
2、掌握使用企业管理器创建与管理数据库。
3、掌握使用企业管理器进行数据表的创建与管理。
二、实验环境
已安装SQL Server 2000的计算机,使用企业管理器进行实验。
三、实验内容及步骤
1、根据软、硬件环境的要求,安装SQL Server 2000。
2、通过“开始”→Microsoft SQL Server→“服务管理器”,打开“SQL Server服务管理器”窗口,选择SQL Server服务。并且通过该窗口“启动”和“停止”SQL Server服务。
3、通过“开始”→Microsoft SQL Server→“企业管理器”打开企业管理器窗口,展开服务器“(LOCAL)(Windows NT)”。
4、利用企业管理器访问系统自带的pubs数据库。
(1)在企业管理器的树形目录中展开“数据库”,找到pubs数据库并展开,查看该数据库的所有对象,如表、视图、存储过程、默认和规则等。
(2)选择pubs数据库的“表”选项,在右窗口中将列出pubs数据库的所有表(包括系统表和用户表),选择用户表titles,右击鼠标,弹出快捷菜单,从中选择“打开表”→“返回所有行”菜单项,打开titles表,查看其内容。
5、利用查询分析器访问pubs数据库的表。
(1)通过“开始”→Microsoft SQL Server→“查询分析器”方式运行SQL Server查询分析器,或者在企业管理器中,选择“工具”→“SQL 查询分析器”菜单项,运行SQL Server查询分析器。
(2)在查询分析器窗口中,选择“查询”→“更改数据库…”菜单项,或者单击常用工具栏中的“更改数据库”下拉按钮,选择所要操作的pubs数据库。
(3)在查询分析器的编辑窗口中,输入以下代码:
SELECT type,avg(price)
FROM titles
WHERE royalty = 10
GROUP BY type
(4)选择查询分析器的“查询”→“分析”菜单项,或者单击常用工具栏上“分析查询”按钮,查询分析器将对输入的代码进行语法分析,并由消息窗格给出分析结果报告。
(5)选择查询分析器的“查询”→“执行”菜单项,或者单击常用工具栏上“执行查询”按钮,SQL Server将编译窗口中的代码,并在结果窗格中显示查询结果,如图1-1所示。
图1-1 查询结果
6、新建数据库
(1)通过“开始”→Microsoft SQL Server→“企业管理器”打开企业管理器窗口,右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的名称文本框中输入学生管理数据库名studentsdb(注意此时不要按确定)。在“数据文件”选项卡中点击,更改数据文件的位置为“D:\\Myfile”。在“事务日志”选修卡中点击,更改日志文件的位置为“D:\\Myfile”。(预先在电脑D盘新建文件夹Myfile)。然后点击“确定”。
(2)设置数据库属性。右击所要设置属性的数据库,从弹出的快捷菜单中选择“属性”,可点击相应的选项卡修改相关属性。
7、使用企业管理器在Studentsdb数据库中定义3个表。
点击studentsdb数据库展开,右击表,然后选择“新建表”,根据以下各表内容创建Studentsdb数据库中的三张表。
(1)学生基本情况表student(学号,姓名,性别,出生日期,家庭住址,备注),详细结构如表1-1所示。
表1-1 student表结构
(2)课程信息表course(课程编号,课程名称,学分),详细结构如表1-2所示。
表1-2 course表结构
(3)学生成绩表grade(学号,课程编号,分数),详细表结构如表1-3所示。
表1-3 grade表结构
(4)在企业管理器中,将student表的学号列设置为主键,非空。选中student表,右击,选择设计表,右击学号,选择“设置主键”。
(5)在企业管理器中,将course表的课程编号设置为主键,非空。
(6)在企业管理器中,将grade表的学号和课程编号设置为主键,同时选中学号和课程编号,选择“设置主键”。将学号设置为外键,参照student表。右击学号,选择关系,在属性选项卡中点击“新建”,主键表选择student,外键表选择grade,分别在下拉框中选择“学号”,然后点击“关闭”。如图1-2所示。将课程编号设置为外键,参照course表。
如图1-2 外键设置表
8、在企业管理器中为student、course、grade三个表添加数据。
(1)分别右击student、course、grade表,然后选择“打开表”输入各表数据。student、course和SC表中的数据如图1-1 、图1-2、图1-3所示。
图1-1 student的数据
图1-2 course的数据
图1-3 grade的数据
9、使用企业管理器查看已创建的Studentsdb数据库和3个表的内容。
10、停止数据库服务器,将D:\\myfile中的.mdf和.ldf两个文件拷贝至U盘中以备下一次实验使用。
11、重新启动数据库服务器,在企业管理器中删除studentsdb数据库。
实验思考:
1、查询分析器的作用是什么?可以有几种启动查询分析器的方法?
2、改变查询分析器的当前数据库,使用什么方法?
3、在企业管理器中,studentsdb数据库的student表的数据输入时,如果输入相同学号的记录将出现什么现象?怎样避免该情况的发生?
实验2 数据库的定义和操作
一、实验目的
1、掌握查询编辑器的使用方法,包括创建SQL查询和SQL脚本,执行SQL语句并以表格或文本形式显示结果,或保存为报表文件输出;
2、掌握用T-SQL语句创建数据表、修改表结构
3.掌握用T-SQL语句向数据库中输入数据、修改数据、删除数据
二、实验环境
已安装SQL Server 2000的计算机,使用查询分析器进行实验。
三、实验内容及步骤
1、附加数据库
将上一次备份到U盘的包含studentsdb.mdf和studentsdb_log.mdf的文件夹myfile拷入D盘中。通过附加数据库,可以将没有加入SQL Server服务器的数据库文件加到服务器中。
通过“开始”→Microsoft SQL Server→“企业管理器”打开企业管理器窗口,右击“数据库”,选择“附加”命令,打开“附加数据库”窗口。单击“添加”按钮,选择D盘myfile中的studentsdb.mdf,并单击“确定”按钮,回到“附加数据库”窗口,再单击“确定”按钮,即可完成附加数据库的工作。
2、启动“查询分析器”。
3、使用SQL语句创建、修改表
(1)使用CREATE TABLE在studentsdb数据库中创建系表Dept。
Dept表
| 说明 | 数据类型 | 约束 |
| 系号 系名 | 整数 字符串,长度为20 | 主键 非空 |
(2)使用CREATE TABLE在studentsdb数据库中创建教师表Teacher。
Teacher表
| 列名 | 数据类型 | 约束 |
| 教师编号 教师名 系号 | 整数 字符串,长度为8 整数 | 主键 非空 外键,引用Dept表 |
(3)使用SQL语句ALTER TABLE修改course表的“课程编号”列,使之为非空。
(4)使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为real。
(5)使用SQL语句ALTER TABLE在Student表中加入属性系号(INT型),设置为外键,引用Dept表。
(6)使用SQL语句ALTER TABLE在course表中增加属性先修课(数据类型为char(4))和任课教师(引用Teacher表)。
4、采用SQL语句INSERT INTO…VALUES向studentsdb数据库中的数据表插入数据。
(1)向grade表中插入以下数据:
学号 课程编号 分数
0004 0001 80
0005 0002 90
(2)向Dept表中插入下列数据:
系号 系名
10 计算机科学与技术
20 信息
(3)向Teacher表中插入下列数据
教师编号 教师名 系号
101 张星 10
102 李珊 10
103 赵天应 10
104 刘田 20
5、采用SQL语句UPDATE 对studentsdb数据库中修改数据表的数据
(1)将0005号学生的出生日期改为2000-8-1。
(2)将成绩在60分以下的学生的成绩置零。
(3)将grade表中刘卫平同学的课程编号为“0004”的记录的分数修改为90分。
(4)将course表中的“英语”课程的任课教师为张星老师。
(5)将张星老师“英语”课程的学生成绩全部加2分
6、采用SQL语句DELETE 删除studentsdb数据库中数据表的数据
(1)删除grade表中学号为“0004”的成绩记录。
(2)删除年龄小于20岁的所有学生的成绩记录
实验3 数据库查询
一、实验目的
掌握各种查询的SQL脚本写法,包括SELECT、FROM、WHERE、GROUP BY、HAVING子句的用法,特别要求比较内连接、外连接的结果。
二、实验环境
安装SQL Server2000的计算机,数据库中已经建立了Studentsdb数据库,数据库中建立了Student、Course、grade、Teacher和Dept五个数据表,并在数据表中输入了一些数据。
三、实验内容及完成情况
在studentsdb数据库中,用SQL进行下列查询操作
1.使用SELECT语句进行基本查询。
(1)在student表中,查询每个学生的学号、姓名、出生日期信息。
(2)查询学号为0002的学生的姓名和家庭住址。
(3)找出所有男同学的学号和姓名。
2、使用SELECT语句进行条件查询
(1)在grade表中查找分数在80~90范围内的学生的学号和分数。
(2)在grade表中查询学号为0003的学生的平均分。
(3)在grade表中查询学习各门课程的人数。
(4)将学生按出生日期由大到小排序。
(5)查询所有姓“张”的学生的学号和姓名。
3、嵌套查询
(1)在student表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。
(2)使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。
(3)列出学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。
(4)列出学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。
4、多表查询
(1)查询分数在80~90范围内的学生的学号、姓名、分数。
(2)查询学习“C语言程序设计”课程的学生的学号、姓名、分数。
(3)查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。
(4)查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号、分数。
(5)查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。
实验4 存储过程和触发器编写
一、实验目的
1、理解存储过程的必要性和存储过程的基本概念。
2、熟练掌握存储过程的建立、修改、删除等基本操作。
3、理解使用触发器的必要性和触发器的基本概念。
4、熟练掌握触发器的建立、修改、删除等基本操作。
二、实验环境
安装SQL Server2000的计算机,数据库中已经建立了StudentIsdb数据库,数据库中建立了Student、Course、grade、Teacher和Dept五个数据表,并在数据表中输入了一些数据。
三、实验内容及完成情况
1、建立如下存储过程并分别执行查看结果
(1)统计选修“数据库”课程的学生成绩分布情况,按照分数段统计人数(90~100,80~,70~79,60~69,<60)。
存储过程:
执行存储过程并写出输出结果:
(2)根据输入课程名称,计算该课程的平均分。
存储过程:
执行存储过程并写出输出结果:
(3)根据学号、课程名,参数显示指定学生成绩的等级制成绩(百分制改为等级制A、B、C、D、E)。
存储过程:
执行存储过程并写出输出结果:
2、建立如下触发器并分别执行验证触发器是否有效
(1)为Student表建立触发器,检查学生的出生日期必须小于当前日期,否则不允许插入或修改。
触发器:
验证触发器结果:
(2)为SC表建立触发器,当插入该生的选课信息时,检查若此门课程有先行课并且该生没选修过该门课程,提示用户没有选修过先行课,无法选修此课程。
触发器:
验证触发器结果:
实验5 数据库编程
一、实验目的
1、掌握Visual Basic的基本操作,如创建工程、窗体,添加控件、部件和引用等。
2、掌握ActiveX DataObjects(简称ADO)数据控件连接SQL Server数据库的方法。
3、掌握ADO数据对象连接SQL Server数据库的方法。
4、掌握VB控件与ADO数据控件的绑定方法。
5、掌握ODBC数据源创建方法,使用ODBC数据源驱动ADO数据控件的方法。
二、实验环境
1、安装SQL Server2000的计算机,数据库中已经建立了Studentsdb数据库,数据库中建立了Student、Course、SC、Teacher和Dept五个数据表,并在数据表中输入了一些数据。
2、安装了Visual Basic 6.0企业版开发环境。
三、VB程序设计概述
VB是Windows操作平台下常用的程序设计语言,也是常用的数据库系统开发工具。Visual指的是采用可视化的开发图形用户界面的方法,一般不需要编写大量代码区描述界面元素的外观和位置,而只要把需要的控件拖放到屏幕上的相应位置即可方便地设计图形用户界面。
1、VB 6.0集成开发环境
VB将一个应用程序称作一个工程。在启动VB的过程中,在“新建工程”窗口选择新建一个“标准 EXE”,会自动出现一个新窗体,进入VB的集成开发环境界面,如图5-1所示。
图5-1 VB6.0新建工程界面
VB集成开发环境具有标题栏、菜单栏和工具栏。标题栏的内容就是应用程序工程的名称加上“Microsoft Visual Basic[设计]”字样内容。菜单栏提供了编辑、设计和调试VB应用程序所需要的菜单命令。工具栏是一些菜单命令的快捷按钮。
此外,VB集成开发环境还具有窗体窗口、代码窗口、工具箱、工程资源管理器窗口、属性窗口和窗体布局窗口等。
窗体窗口时图中标题栏内容为Form1的那个窗口,它是要设计的应用程序界面。
代码窗口时图中标题栏内容为“工程1-Form1(Code)”的那个窗口,通过单击VB集成环境窗口“视图”菜单的“代码窗口”选项就可将代码窗口置于前面。代码窗口就是用来输入程序代码的地方。
工具箱窗口存放了建立应用程序所需要的内部控件,也叫标准控件。
工程资源管理器窗口用树状的层次管理方法来显示与工程有关的所有文件盒对象的清单。
属性窗口通常在工程资源管理器窗口下面,由一个下拉列表框和一个两栏的表格组成。下拉列表框中列出当前工程的所有控件对象(包括窗体)的名称和所属的类别名(类名),下面的两栏表格列出了所选对象的所有属性名、属性值。编程人员可以对对象的某些属性值进行修改。
2、用Visual Basic编写程序的步骤
使用VB编程,一般先设计应用程序的外观,然后再分别编写各对象事件的程序代码或其他处理程序。创建VB应用程序的步骤如下:
(1)创建应用程序界面。
(2)设置界面上各个对象的属性。
(3)编写对象响应的程序代码。
(4)保存工程。
(5)运行和调试程序。
(6)生成可执行程序。
3、VB数据库应用程序开发
(1)Visual Basic中的数据访问方法
在VB中,有3种数据访问接口,即数据访问对象(Data Access Object,DAO)、远程数据对象(Remote Data Object,RDO)和ActiveX数据对象(ActiveX Data Objects,ADO)。
(2)ODBC数据源
开放数据库互联(ODBC)是Microsoft公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准应用程序编程接口(API)。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。一个完整的ODBC由下列几个部件组成:应用程序、ODBC管理器、驱动程序管理器、ODBC API、ODBC驱动程序和数据源。
ODBC管理器位于Windows控制面板内,其主要任务是管理安装ODBC驱动程序和管理数据源。应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。
(3)数据源连接控件
VB提供了多种数据源的连接方式,即Data控件、ADO Data控件和ADO数据模型。
1)Data控件
Data控件提供的属性定义了怎样连接数据库以及连接什么数据库,其中3个最基本的属性Connect、DatabaseName和RecordSource决定了所要访问的数据源。
2)ADO Data控件
ADO Data控件与内部Data控件相似。ADO Data控件使用户可以使用Microsoft ActiveX Data Object是(ADO)快速地创建一个到SQL Server 2000数据库的连接。ADO Data控件不会默认出现在VB的“工具箱”中,首先需要将ADO Data控件添加到工程中。ADO Data控件的属性主要有ConnectionString、CommandType、RecordSource和RecordSet属性。
3)ADO数据模型
Microsoft ActiveX Data Objects(ADO)使用户能够编写通过OLE DB提供者对在数据库服务器中的数据进行访问和操作的应用程序。要在程序中使用ADO,必须首先添加对ADO的引用。ADO对象模型共有7个对象:Command、Connection、Error、Field、Parameter、Property和RecordSet,其中Connection、Command和Recordset是ADO对象模型的核心对象。
四、实验内容与步骤
选择Windows的“开始”→“程序”→“Microsoft Visual Basic6.0中文版”菜单项,启动Visual Basic程序。在“新建工程”对话框中,选择“标准EXE”图标来创建工程1。
在工程1的属性窗口中,将工程名称“工程1”修改为student。
(一)使用ADO数据控件创建数据绑定控件与数据提供者之间的连接,访问SQL Server。
(1)添加ADO数据控件到工具箱。选择“工程”→“部件”菜单项,在“部件”对话框中选择“Microsoft ADO Data Control 6.0(OLEDB)”项前面的复选框,工具箱将增加一个控件按钮Adodc“”。
(2)选择窗体form1,将form1的名称修改为frmQuery,修改Caption属性为课程查询。
(3)在窗体frmQuery中添加ADO数据控件Adodc1,并建立与SQL Server的连接。
单击Adodc1的属性窗口的ConnectionString属性右边的按钮,在ConnectionString属性对话框中单击“使用连接字符串”右侧的“生成”按钮,出现如图5-2所示的“数据链接属性”对话框。选择“OLE DB提供程序”的Microsoft OLE DB Provider for SQL Server项。
图5-2“数据链接属性”对话框
单击“下一步”按钮,在“数据链接属性”对话框的“连接”选项卡中确定“输入登录服务器的信息”为“使用Windows NT集成安全设置”项,“在服务器上选择数据库”确定SQL Server上的数据库为studentsdb,如图5-3所示。
图5-3 “数据链接属性”对话框的“连接”选项卡
单击“测试连接”按钮,显示测试成功,表明ADO数据控件与SQL Server数据库studentsdb建立了连接,如图5-4所示,连接字符串已填空在“使用连接字符串”编辑框中。
图5-4 ConnectionString属性对话框
(4)确定Adodc1数据控件的记录源为course表。单击Adodc1的RecorderSource右边的按钮,在RecordSource的属性对话框中选择“记录源”的“命令类型”为“2-adCmdTable”,选择“表或存储过程名称”为course,如图5-5所示。
图5-5 RecordSource的属性对话框
(5)在窗体frmQuery中添加3个Label控件和TextBox控件。选择VB窗口左侧工具箱的“”图标,在窗体frmQuery添加标签控件Label1,修改Caption属性值为“课程编号”。选择工具箱的“”图标,添加文本框控件Text1,如此所示添加其他的控件。
各控件属性如表5-1所示,控件Text1、Text2、Text3与Adodc1数据源的各字段进行了绑定。
表5-1 窗体frmQuery新增控件属性
| 控件 | 控件名称 | 控件属性 | 属性值 |
| Label | Label1 | Caption | 课程编号 |
| Label2 | Caption | 课程名称 | |
| Label3 | Caption | 学分 | |
| TextBox | Text1 | DataSource | Adodc1 |
| DataField | 课程编号 | ||
| Text2 | DataSource | Adodc1 | |
| DataField | 课程名称 | ||
| Text3 | DataSource | Adodc1 | |
| DataField | 学分 |
要运行窗体frmQuery,需要修改工程student属性的启动对象为frmQuery,然后点击运行。
窗体frmQuery运行时,单击Adodc1控件的按钮,可以使course表的记录前后移动,图5-6中记录已移动到第4条记录。
图5-6 窗体frmQuery布局
(6)按以上实验内容所示方法,建立student、grade表的查询窗体,通过ADO数据控件连接数据、控制记录的移动。
(二)使用ActiveX数据对象ADO访问SQL Server。
在工程引用中添加ADO数据对象。选择“工程”→“引用”菜单项,选择“Microsoft ActiveX Data Objects 2.6 Library”项前面的复选框。
ADO的对象名为ADODB,使用Connection和Recordset对象直接访问数据。
(1)在工程student中新建一个窗体,命名为frmCourse。
(2)在窗体frmCourse的右侧form1的属性窗口中,修改Caption属性为“课程录入”。
(3)在工程student的窗体frmCourse上,添加表5-1中所列控件,但不能与Adocdc1绑定。在窗体frmCourse添加如图5-7所示的按钮控件。从左侧的工具箱中添加命令按钮到frmCourse中,修改Caption属性为“新增”,按钮名称属性为cmdOK。同样,再添加两个按钮,分别将按钮名称修改为cmdCancel和cmdExit,Caption属性修改为“取消”和“退出”。
图5-7 frmCourse窗体布局
(4)从SQL Server获取数据,创建连接对象CourseCon,使用以下代码定义在窗体frmCourse的声明部分。
Dim CourseCon As New ADODB.Connection
(5)窗体frmCourse载入时,打开Connection对象,使用连接字符串连接数据库。
Private Sub Form_Load()
CourseCon.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=studentsdb"
CourseCon.Open
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
(6)双击“新增”按钮,打开代码窗口,在cmdOK_Click()事件中输入以下代码。
Private Sub cmdOK_Click()
Dim rs As New ADODB.Recordset
Set rs = CourseCon.Execute("select * from course where 课程编号 = '" + Text1.Text + "'")
If rs.BOF Then
Set rs = CourseCon.Execute("Insert into course(课程编号,课程名称,学分) values('" + Text1.Text + "','" + Text2.Text + "'," + Text3.Text + ")")
Else
MsgBox "此课程已录入,请重新输入"
End If
Set rs = Nothing
Text1.Text = ""
Text2.Text = ""
Text3.Text = "" End Sub
当窗体输入的信息不正确时,要删除重新输入,使用cmdCancel按钮实现此功能,其代码为
Private Sub cmdCancel_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
MsgBox "取消输入的操作", , "信息"
End Sub
在窗体退出时,应关闭数据连接CourseCon。
Private Sub Form_Unload(Cancel As Integer)
CourseCon.Close
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
将student工程属性的“启动对象”设置为frmCourse,以便直接运行frmCourse窗体。
运行时,分别输入课程编号为0001和0009的记录,查看是否能插入到course表中。
(7)参考以上实验内容所示方法,建立student、grade表的录入记录窗体,通过ADO数据对象ADODB控制数据的插入。
(三)使用ODBC连接studentsdb数据库。
(1)打开Windows控制面板,双击控制面板中“管理”→“ODBC数据源”图标,打开“ODBC数据源管理器”对话框,选择“文件DSN”项。
(2)单击“添加”按钮,在“创建数据源”对话框中选择服务器驱动程序为“SQL Server”,单击“下一步”按钮,如图所示。在弹出的对话框的数据源名称编辑框中输入:
C:\\Program Files\\Common Files\\ODBC\\Data Sources\\stODBC.dsn
(3)单击“下一步”按钮。在“创建到SQL Server的新数据源”对话框中,输入SQL Server的服务器名称,选择“使用网络登录ID的Windows NT验证”,“更改默认的数据库”为studentsdb,如图所示。
(4)在“ODBC Microsoft SQL Server安装”对话框中,单击“测试数据源”按钮,进行ODBC数据源测试,显示“测试成功”信息窗口,如图所示。
在“ODBC数据源管理器”对话框中可以看到添加的文件DSN为stODBC.dsn,如图5-8所示。
图5-8 添加stODBC.dsn为文件DSN
(5)通过VB控件使用ODBC。
在工程student中添加窗体frmStui,Caption属性为“学生信息浏览”,在窗体中添加表5-2所列的控件。
窗体frmStui的控件布局如图5-9所示。
表5-2 窗体frmStui所含的控件及属性值
| 控件 | 控件名称 | 控件属性 | 属性值 |
| Adodc | Adodc1 | ConnectionString | Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DRIVER=SQL Server;SERVER=WYPFN2UWI4LHYSN;APP=Microsoft Data Access Components;WSID=WYPFN2UWI4LHYSN;DATABASE=studentsdb;Trusted_Connection=Yes" |
| RecordSource | Student | ||
| Visible | False | ||
| DataGRid | DataGrid1 | DataSource | Adodc1 |
图5-9 窗体frmStui的控件布局
其中,DataGrid表格控件不在工具箱中,选择“工程”→“部件”菜单项打开“部件”对话框,添加“Microsoft DataGrid Control 6.0 (OLEDB)”项。
Adodc数据控件的连接字符串的提供程序选择“Microsoft OLE DB Provider for ODBC Drivers”项,在“数据源属性”对话框的“连接”选项卡中“编译”,“测试连接”。
运行frmStui窗体,显示如图5-10所示学生信息表格浏览窗口。
图5-10 学生信息表格浏览窗口
(6)设计窗体frmGrade,使用ODBC驱动数据库,显示学生成绩浏览窗口。
(7)设计查询窗体frmQryGrade,在文本框输入学生姓名,可以查出该名学生的所有课程编号及成绩,使用DataGrid控件显示学生所修课程编号及成绩数据。
提示:1)参考实验内容(二)的6,通过记录集对象执行查询语句获取学生姓名所对应的学号。
2)DataGrid控件的数据源使用Adodc控件Adodc1,其RecordSource属性为查询语句。初始数据源为查询语句
Adodc1.RecordSource = “select * from grade”
当输入学生姓名并进行查询时,其数据源修改为:
Adodc1.RecordSource = "select * from grade where 学号 = '" & stName + "'"
参考:
在frmQryGrade窗体中添加表5-3所列的控件,并设置相应的属性值。
表5-3 窗体frmQryGrade所含的控件及属性值
| 控件 | 控件名称 | 控件属性 | 属性值 |
| Label | Label1 | Caption | 输入学生姓名 |
| TextBox | Text1 | Text | |
| Command-Button | cmdQry | Caption | 查询 |
| ADODC | Adodc1 | ConnectonString | Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DRIVER=SQL Server;SERVER=WYPFN2UWI4LHYSN;APP=Microsoft Data Access Components;WSID=WYPFN2UWI4LHYSN;DATABASE=studentsdb;Trusted_Connection=Yes" |
| RecordSource | |||
| Visible | |||
| DataGrid | DataGrid1 | DataSource |
Dim stName As String
Dim stCon As New ADODB.Connection
Private Sub cmdQry_Click()
Dim rs As ADODB.Recordset
Set rs = stCon.Execute("select * from student where 姓名 = '" & Text1.Text + "'")
If Not rs.BOF Then
stName = rs("学号")
Else
stName = " "
End If
Adodc1.RecordSource = "select * from grade where 学号 = '" & stName + "'"
Adodc1.Refresh
End Sub
Private Sub Form_Load()
stCon.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=studentsdb"
stCon.Open
End Sub
Private Sub Form_Unload(Cancel As Integer)
stCon.Close
End Sub
(四)用户登录窗体设计
(1)首先在数据库studentsdb中新建一个数据表user_info,其中有两个字段user_ID和user_PWD,分别存放用户名和密码。
(2)新建一个窗体Register,用来实现用户登录,如图5-11所示。用户登录窗体中放置两个文本框,用来输入用户名和密码;两个按钮用来进入或退出登录;3个标签用来显示窗体的信息。这些控件的属性设置如表5-4所示
表5-4 登录窗体的控件及属性值
| 控件 | 控件名称 | 控件属性 | 属性值 |
| Form | Register | Caption | 登录 |
| Label | Label1 | Caption | 用户登录 |
| Label2 | Caption | 用户名: | |
| Label3 | Caption | 用户密码: | |
| TextBox | username | Text | |
| userpassword | Text | ||
| Button | cmdok | Caption | 登录 |
| cmdcancel | Caption | 退出 |
在代码窗口设置
Dim stCon As New ADODB.Connection
窗体Register载入时,打开Connection对象,使用连接字符串连接数据库。
Private Sub Form_Load()
stCon.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=studentsdb"
stCon.Open
End Sub
双击登录按钮,编写代码。
Private Sub cmdok_Click()
Dim txtsql As String
Dim mrc As ADODB.Recordset
Dim msgtext As String
If username.Text = " " Then
MsgBox "请输入用户名!"
username.SetFocus
Else
txtsql = "select * from user_info where user_ID='" & username.Text & "'"
Set mrc = stCon.Execute(txtsql)
If mrc.EOF Then
MsgBox "没有这个用户"
username.SetFocus
Else
If Trim(mrc.Fields("user_PWD")) = Trim(userpassword.Text) Then
Username_OK = Trim(userpassword.Text)
Unload Me
frmMain.Show
Else
MsgBox "输入密码不对!请重新输入"
userpassword.SetFocus
End If
End If
End If
End Sub
双击退出按钮,编写代码。
Private Sub cmdCancel_Click()
End
End Sub
(3)新建一个主窗体frmMain,如图所示5-12所示。
图5-12 主窗体
(4)将工程属性启动窗体设置为Register,运行。
(五)实验思考
(1)使用实验内容介绍的数据连接方法,建立并修改student表中的数据窗体,要求既可以浏览记录,又可以保存记录的修改数据等功能。
(2)在实验内容(三)的基础上,输入学生姓名,查询该名学生的课程名称及对应成绩。
(3)完善主窗体frmMain的内容,可以从该窗体进行整个管理系统的操作。
提示:可以采用菜单形式或按钮命令形式。下载本文