信息系统与数据库技术实验指导答案
更新时间:2023-10-29 20:23:01 阅读量: 综合文库 文档下载
10.1 实验一 SQL Server数据库基本操作
一.实验目的
本实验主要了解Microsoft SQL Server 2000中各组件的主要功能和基本使用方法;了解SQL Server数据库的逻辑结构和物理结构;了解数据表的结构特点以及索引的基本概念。通过本实验,读者将学会在“企业管理器”中创建和修改数据库和数据表结构、对数据表进行数据的添加、删除和更新操作以及在数据表上创建字段索引的操作。
二.实验环境
? Microsoft SQL Server 2000 企业管理器
三.实验内容
1.创建一个名称为Book的数据库,支持教材订购信息管理,要求:
(1)将主数据库文件Book_Data.MDF放置在的D:\\DBF文件夹中,文件大小为5MB,最大值为50MB,文件增量为2MB。
(2)将事务日志文件Book_Log.LDF放置在的D:\\DBF文件夹中,文件大小为5MB,最大值为100MB,文件增量为1MB。
实验参考步骤:
1)在D:\\下创建DBF文件夹。
2)在企业管理器窗口右单击“数据库”或任一数据库名,从快捷菜单中选择“新建数据库”命令,出现“数据库属性”对话框。
3) 在“数据库属性”对话框中选择“常规”选项卡,在名称文本框中输入:Book;
4) 在“数据库属性”对话框中选择“数据文件”选项卡,设置数据文件的位置、大小、最大值和文件增量等属性;
5) 在“数据库属性”对话框中选择“事务日志”选项卡,设置事务日志文件的位置、大小、最大值和文件增量等属性。
2.在上题所建数据库Book中建立5张数据表结构并分别向数据表插入记录。
实验参考步骤:
在企业管理器中展开Book数据库。右击数据库文件夹下的“表”项,从弹出的快捷菜单中选择“新建表”命令,弹出“表设计”界面,分别建立5张表的结构,并且为各个表建立主关键字。
3.创建T_Teacher、T_Academy、T_BookInfo、T_Publisher和T_BookOrder5个表之间的关系。
实验参考步骤::
1) 在企业管理器中展开Book数据库。右击数据库文件夹下的“关系图”项,从弹出的快捷菜单中选择“新建数据库关系图”命令。
2) 通过“创建数据库关系图向导”新建关系图。
4.任选两个数据表插入3-5条记录(例如T_BookInfo、T_BookOrder、T_Teacher),各数据表记录如表9-xb)所示。
实验参考步骤:
在企业管理器中展开Book数据库中的表文件夹,右单击需插入记录的数据表,从弹出的快捷菜单中选择“打开表/返回所有行”命令。在数据表显示界面中依次输入记录。
5.将T-teacher表“TeacherName”字段的类型改为Varchar(16)。为T_BookOrder表添加约
束条件,使得“StuBookNum”和“TeaBookNum”的取值都大于0;“OrderTime”大于2007年。
实验参考步骤:
1) 在企业管理器中展开Book数据库中的表文件夹,右击T-teacher表,选择“表设计”,进入T-teacher表结构设计界面,修改“TeacherName”字段的类型。
2) 在企业管理器中展开Book数据库表文件夹,右击T_BookOrder表,选择“表设计”,进入T_BookOrder表结构设计界面,右单击T_BookOrder表结构设计界面,从弹出的快捷菜单中选择“CHECK约束”命令,在“属性”对话框的“CHECK约束”选项卡中点击“新建”按钮分别设置约束条件。
6.练习记录数据的添加、删除和更新操作。在T_Teacher表中添加记录“01010117、黄蓉、13、女、1977-9-21、副教授、63478445”。将T_Teacher表中TeacherCode为“01010113”的记录删除;将TeacherCode为“01010116”记录的title字段内容更新为“教授”。
实验参考步骤:
在企业管理器中展开Book数据库表文件夹,右击T-teacher表,选择“打开表/返回所有行”,进入T-teacher表数据行显示界面,进行数据的添加、删除和更新操作。
7.在企业管理器中练习索引的创建和删除。在“TeacherName”(降序)和“AcadCode”(升序)上建立一个名称为“Name_Code”的普通索引。删除“Name_Code”索引。
实验参考步骤: 方法1:
在企业管理器中展开Book数据库表文件夹,右击T_Teacher表,选择“表设计”,进入T_Teacher表结构设计界面,右单击T_Teacher表结构设计界面,从弹出的快捷菜单中选择“索引/键”命令,在“属性”对话框的“索引/键”选项卡中点击“新建”按钮进行“Name_Code”索引的建立。 方法2:
在企业管理器中展开Book数据库表文件夹,右击T-teacher表,选择“所有任务/管理索引”,打开“管理索引”窗口,进行索引的建立和编辑。
10.2 实验二 T-SQL语言基本操作
一.实验目的
本实验主要了解T-SQL语句以及在查询分析器中执行T-SQL语句的方法。通过本实验,读者将了解使用T-SQL语句创建数据库和数据表;掌握数据库查询语句Select语句的基本语法及使用方法;掌握对数据表进行数据插入、修改和删除的T-SQL语句;了解T-SQL语言的各种运算符、控制语句的功能并学会简单的程序编写。
二.实验环境
? Microsoft SQL Server 2000查询分析器和Microsoft SQL Server 2000企业管理器 ? Book数据库
三.实验内容
1.利用企业管理器中提供的“生成SQL脚本”命令编写Book数据库中数据表对象“T_Teacher”、“T_BookOrder”、“T_BookInfo”、“T_Publisher”、“T_Academy”创建的脚本文件D:\\Table.sql。
实验参考步骤:
1) 在企业管理器右单击Book数据库,选择“所有任务/生成SQL脚本”菜单,打开“生成SQL脚本”窗口,点击“全部显示”按钮。
2) 按要求添加写入脚本的对象,点击“确定”按钮,打开“另存为”对话框,设置脚本文件名称。
2.在查询分析器中使用T-SQL语句完成实验一中的第1题。
CREATE DATABASE Book ON
(NAME=Book_Data,
FILENAME='D:\\DBF\\BOOK_Data.MDF', SIZE=5MB, MAXSIZE=50MB, FILEGROWTH=2MB) LOG ON
(NAME=Book_log,
FILENAME='D:\\DBF\\Book_Log.LDF', SIZE=5MB, MAXSIZE=100MB, FILEGROWTH=1MB)
3.编写SELECT语句,建立以下查询 1)显示T_BookInfo表中所有字段的值。
SELECT * FROM T_BookInfo
2)查询T_Teacher表中所有记录的TeacherCode、TeacherName、EnterDate和Title字段信息。
USE Book
SELECT TeacherCode,TeacherName,EnterDate,Title FROM T_Teacher
3)查询男教师的姓名(TeacherName),显示时将字段名TeacherName改为“姓名”。
SELECT TeacherName AS 姓名 FROM T_Teacher WHERE Sex='男'
4)查询2007年以后出版的教材名称(BookName)、出版日期(PublishDate)和库存量(StockNum),显示时字段标题分别为:教材名称、出版日期和库存量。
SELECT BookName AS 教材名称,
PublishDate AS 出版日期,StockNum AS 库存量 FROM T_BookInfo
WHERE year(PublishDate)>='2007' 或
SELECT BookName AS 教材名称,
PublishDate AS 出版日期,StockNum AS 库存量 FROM T_BookInfo
WHERE PublishDate>='2007-01-01'
5)查询所有教材的出版社代码(PublisherCode),将重复的记录去掉。
SELECT DISTINCT PublisherCode FROM T_BookInfo
6)查询学生订书量(StuBookNum)最大的3个记录,显示教材代号(BookCode)和学生订书量(StuBookNum)。
SELECT top 3 BookCode,StuBookNum FROM T_BookOrder
ORDER BY StuBookNum DESC
图7
7)查询学生订书量(StuBookNum)在150到250之间的教材信息。
SELECT BookCode,TeacherCode,StuBookNum,OrderTime FROM T_BookOrder
WHERE ( StuBookNum BETWEEN 150 AND 250)
8)查询每一种教材的学生订书总量。
SELECT BookCode AS 教材代号 ,SUM(StuBookNum) AS 学生订书数量 FROM T_BookOrder GROUP BY BookCode
9)查询书名为“VB程序设计”的教材的学生总订量(StuBookNum)和教师总订量(TeaBookNum)和总订量。
SELECT SUM(StuBookNum) AS 学生总订量,SUM(TeaBookNum) AS 教师总订量, (SUM(StuBookNum)+SUM(TeaBookNum)) AS 总订量 FROM T_BookInfo ,T_BookOrder
WHERE T_BookInfo.BookCode=T_BookOrder.BookCode AND BookName='VB程序设计' 或
SELECT SUM(StuBookNum) AS 学生总订量,SUM(TeaBookNum) AS 教师总订量, (SUM(StuBookNum)+SUM(TeaBookNum)) AS 总订量 FROM T_BookInfo INNER JOIN T_BookOrder ON T_BookInfo.BookCode=T_BookOrder.BookCode WHERE BookName='VB程序设计'
10)显示教材的最高价、最低价、平均价、最高价与最低价之间的差值。
SELECT str(Max(Price),5,2) AS 最高价,str(Min(Price),5,2)AS 最低价, str(AVG(Price),5,2) AS 平均价, str((Max(Price)-Min(Price)),5,2) AS 差值 FROM T_BookInfo
11)查询出版社代号(PublisherCode)为10、02、31的出版社所出版的教材信息。要求显示教材名称(BookName)、作者(Author)、价格(Price)、库存(StockNum)和出版社名称(Publisher)。
SELECT T_BookInfo.BookName,T_BookInfo.Author,T_BookInfo.Price, T_BookInfo.StockNum,T_Publisher.PublisherCode,T_Publisher.Publisher FROM T_Publisher,T_BookInfo
WHERE T_Publisher.PublisherCode=T_BookInfo.PublisherCode AND T_Publisher.PublisherCode IN ('10','02','31') 或:
SELECT T_BookInfo.BookName,T_BookInfo.Author,T_BookInfo.Price,
T_BookInfo.StockNum,T_Publisher.PublisherCode,T_Publisher.Publisher FROM T_Publisher INNER JOIN T_BookInfo
ON T_Publisher.PublisherCode=T_BookInfo.PublisherCode WHERE T_Publisher.PublisherCode IN ('10','02','31')
12)查询没有领书的教师信息。要求显示TeacherCode(教师工号)、TeacherName(姓名)、AcadName(学院名称)和Telephone(电话号码),并按学院名称降序排列。
SELECT T_Teacher.TeacherCode,TeacherName,AcadName,Telephone FROM T_BookOrder ,T_Teacher ,T_Academy
WHERE T_Teacher.TeacherCode= T_BookOrder.TeacherCode AND T_Teacher.AcadCode= T_Academy.AcadCode AND TakeAway=0 ORDER BY AcadName DESC 或:
SELECT T_Teacher.TeacherCode,TeacherName,AcadName,Telephone FROM T_Academy INNER JOIN
(T_Teacher INNER JOIN T_BookOrder
ON T_Teacher.TeacherCode=T_BookOrder.TeacherCode) ON T_Academy.AcadCode=T_Teacher.AcadCode WHERE TakeAway=0 ORDER BY AcadName DESC
13)查询人文学院教师所订教材的信息。要求显示教材代码(BookCode)、数量(StuBookNum+TeaBookNum)和订教材日期(OrderTime)。
SELECT BookCode,StuBookNum+TeaBookNum AS 数量,OrderTime FROM T_BookOrder
WHERE TeacherCode IN (SELECT TeacherCode FROM T_Teacher
WHERE AcadCode=(SELECT AcadCode FROM T_Academy
WHERE AcadName='人文学院')) 或:
SELECT BookCode,StuBookNum+TeaBookNum AS 数量,OrderTime FROM T_BookOrder WHERE TeacherCode IN (SELECT TeacherCode
FROM T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode=T_Academy.AcadCode WHERE AcadName='人文学院')
14)查询姓名字符数大于等于4个字符的作者情况,要求显示作者姓名(Author)、教材名称(BookName)。
SELECT Author,BookName From T_BookInfo WHERE LEN(Author)>=4
15)查询教师工号(TeacherCode)为“01010109”的教师是否已预订教材,若已预订则显示所订教材的数量;否则显示:“该教师没有预订教材”。
DECLARE @cn smallint,@text varchar(100)
SELECT @cn=(SELECT StuBookNum+TeaBookNum FROM T_BookOrder
WHERE TeacherCode='01010109') IF @cn>0
SET @text='该教师预订教材数量'+str(@cn) ELSE
SET @text='该教师没有预订教材' SELECT @text
4.使用联接关键字(JOIN――ON)建立查询 1)查询所有教师姓名(TeacherName)及所属学院名称(AcadName)。(提示:本题使用INNER JOIN完成查询)
SELECT TeacherName, AcadName
FROM T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode= T_Academy.AcadCode ORDER BY T_Teacher.AcadCode
2)查询所有学院名称(AcadName)及每个学院的教师姓名(TeacherName)。(提示:本题使用LEFT OUTER JOIN完成查询)
SELECT AcadName,TeacherName
FROM T_Academy LEFT OUTER JOIN T_Teacher ON T_Academy.AcadCode=T_Teacher.AcadCode
3)查询所有教师姓名(TeacherName)及所订教材代号(BookCode)。(提示:本题使用RIGHT OUTER JOIN完成查询)
SELECT TeacherName,BookCode
FROM T_BookOrder RIGHT OUTER JOIN T_Teacher ON T_BookOrder.TeacherCode=T_Teacher.TeacherCode
4)查询所有已订教材的教师姓名(TeacherName)、教材代号(BookCode)及教材名称(BookName)。(提示:本题使用嵌套的INNER JOIN完成查询)
SELECT TeacherName,T_BookOrder.BookCode,BookName From T_Teacher INNER JOIN
(T_BookOrder INNER JOIN T_BookInfo
ON T_BookOrder.BookCode=T_BookInfo.BookCode) ON T_Teacher.TeacherCode=T_BookOrder.TeacherCode
5.使用SELECT语句复制数据表
1)将T_BookOrder表中的教师编号(TeacherCode)、教材代号(BookCode)、学生用书量(StuBookNum)、教师用书量(TeaBookNum)字段及对应的书名(BookName)复制到新表NewTable1中。
SELECT TeacherCode,T_BookOrder.BookCode,BookName,StuBookNum,TeaBookNum INTO NewTable1
FROM T_BookInfo ,T_BookOrder
WHERE T_BookInfo.BookCode=T_BookOrder.BookCode 或:
SELECT BookName,T_BookOrder.BookCode,StuBookNum,TeaBookNum INTO NewTable1
FROM T_BookOrder INNER JOIN T_BookInfo ON T_BookOrder.BookCode=T_BookInfo.BookCode
2)将T_Teacher表中的教师姓名(TeacherName)、性别(Sex)字段及每个教师所属的学院名称(AcadName)复制到新表NewTable2中。
SELECT TeacherName, Sex, AcadName INTO NewTable2
FROM T_Teacher ,T_Academy
WHERE T_Teacher.AcadCode= T_Academy .AcadCode 或:
SELECT TeacherName, Sex, AcadName INTO NewTable2
FROM T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode= T_Academy.AcadCode
6.使用DELECT语句练习删除操作
1)删除NewTable1表中学生用书量(StuBookNum)和教师用书量(TeaBookNum)之和低于60的记录。
DELETE FROM NewTable1 WHERE StuBookNum+TeaBookNum<60
2)删除NewTable2表中姓“王”和姓“杨”的记录。
DELETE FROM NewTable2
WHERE LEFT(TeacherName,1)='王'OR LEFT(TeacherName,1)='杨' 或:
DELETE FROM NewTable2
WHERE TeacherName LIKE '王%' OR TeacherName LIKE '杨%'
3)删除NewTable1中“体育部”教师的订书记录。
DELETE FROM NewTable1
WHERE TeacherCode IN (SELECT T_Teacher.TeacherCode From T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode=T_Academy.AcadCode Where AcadName='体育部' )
7.使用INSERT语句练习插入操作
1)在NewTable2表中添加一条记录,姓名:吴清、性别:女、学院名称:计算机科学与技
术学院。
INSERT INTO NewTable2(TeacherName,Sex,AcadName) VALUES('吴清','女','计算机科学与技术学院')
2)将T_Teacher表中姓“王”和姓“杨”的记录添加到NewTable2表中。
INSERT INTO NewTable2
SELECT TeacherName,Sex,AcadName
FROM T_Teacher INNER JOIN T_Academy ON T_Teacher.AcadCode=T_Academy.AcadCode
WHERE LEFT(TeacherName,1)='王' OR LEFT(TeacherName,1)='杨'
8.使用UPDATE语句修改数据
1)将2000年以前(不包括2000年)入校的、职称为助教的教师职称(TitleCode)往上提一级。
UPDATE T_Teacher SET Title='讲师'
WHERE Title='助教' AND YEAR(EnterDate)<2000
2)修改订书数量。要求:所有学院名称中包含汉字“工”的学院所属的教师所订的学生定书量减少3本、教师定书量增加3本。
UPDATE T_BookOrder
SET StuBookNum=StuBookNum-3,TeaBookNum=TeaBookNum+3 WHERE TeacherCode IN
(SELECT T_BookOrder.TeacherCode
FROM T_BookOrder,T_Academy,T_Teacher
WHERE T_BookOrder.TeacherCode= T_Teacher.TeacherCode
AND T_Teacher.AcadCode= T_Academy.AcadCode AND AcadName LIKE '%工%' )
3)将订书量超过300本的教材库存量增加500本。
UPDATE T_BookInfo SET StockNum=500
WHERE BookCode IN (SELECT BookCode FROM T_BookOrder )
10.3 实验三 SQL Server的视图、存储过程和触发器
一.实验目的
本实验主要了解SQL Server视图、存储过程和触发器的基本概念和使用方法。通过本实验,读者将学会在企业管理器中创建、修改、执行和删除存储过程的操作以及在查询分析器中执行的T-SQL语句;掌握触发器的创建、修改和删除的操作方法和T-SQL语句。掌握视图的创建、修改和删除的操作方法和T-SQL语句。
二.实验环境
? Microsoft SQL Server 2000 企业管理器和Microsoft SQL Server 2000 查询分析器 ? Book数据库
三.实验内容
1.创建存储过程proc_book1,查询指定学院的教师预订教材的情况。要求显示教材名称(T_BookInfo.BookName)、教师姓名(T_Teacher.TeacherName)和教材数量(T_BookOrder.StuBookNum+T_BookOrder.TeaBookNum)。 (1)查询条件为:学院代码
CREATE PROC proc_book1 @acode char(6) AS
SELECT BookName, TeacherName,StuBookNum+TeaBookNum AS 数量 FROM T_Teacher INNER JOIN (T_BookOrder INNER JOIN T_BookInfo ON T_BookOrder.BookCode= T_BookInfo.BookCode) ON T_Teacher.TeacherCode=T_BookOrder.TeacherCode WHERE T_Teacher.AcadCode=@acode
--执行存储过程proc_book1,查询学院代号为'02'的教师预订教材的信息。 EXEC proc_book1 '02' 或:
EXEC proc_book1 @scode='02'
(2)查询条件为:学院名称
CREATE PROC proc_book1_2 @aname varchar(50) AS
SELECT BookName, TeacherName,StuBookNum+TeaBookNum AS 数量 FROM T_Academy,T_Teacher,T_BookOrder,T_BookInfo WHERE T_Academy.AcadCode=T_Teacher.AcadCode
AND T_Teacher.TeacherCode=T_BookOrder.TeacherCode AND T_BookInfo.BookCode=T_BookOrder.BookCode AND T_Academy.AcadName=@aname
--执行存储过程proc_book1_2,查询学院名称为'人文学院'的教师预订教材的信息。 EXEC proc_book1_2 '人文学院' 或
EXEC proc_book1_2 @scode='人文学院'
2.创建存储过程proc_book2,查询指定教材的预订数量。
统计条件为:教材代码
CREATE PROCEDURE proc_book2 @tcode char(20) AS
SELECT SUM(StuBookNum)+SUM(TeaBookNum) FROM T_BookOrder GROUP BY BookCode HAVING BookCode=@tcode
--执行存储过程proc_book2,统计教材代号为'010004'的预订信息。 exec proc_book2 '100001'
3.创建添加教材信息的存储过程proc_book3。
CREATE PROCEDURE proc_book3 (@bookcode char(6),@bookname varchar(40), @publishercode varchar(2),@author varchar(40), @publisherdate datetime,@price money, @isbncode char(20),@stocknum smallint, @booksort char(20)) AS BEGIN
INSERT INTO T_BookInfo
VALUES(@bookcode,@bookname,@publishercode,@author, @publisherdate,@price, @isbncode,@stocknum,@booksort) END
--执行存储过程proc_book3
EXEC proc_book3 '500001','信息系统管理技术','31','谭浩强','2007-05-11',30,'760211008',30,'计算机'
4.创建存储过程proc_book4,查询指定教材名称和出版社名称的教材所对应的教材代号和库存。
CREATE PROCEDURE proc_book4
@bookname varchar(40),@publisher varchar(40),
@bookcode char(6) OUTPUT,@stocknum smallint OUTPUT AS
SELECT @bookcode=BookCode,@stocknum=StockNum FROM T_BookInfo INNER JOIN T_Publisher
ON T_Publisher.PublisherCode=T_BookInfo.PublisherCode WHERE T_Publisher.Publisher=@publisher AND BookName=@bookname
--执行存储过程proc_book4
DECLARE @bookcode char(6),@stocknum smallint
EXEC proc_book4 'C语言程序设计','电子工业出版社',@bookcode OUTPUT,@stocknum OUTPUT PRINT '该教材的代号'+CAST(@bookcode AS char(6)) PRINT '该教材的库存'+STR(@stocknum)
5.创建触发器tri_book1,在对T_Teacher表进行插入、修改和删除记录时,都会自动显示表中的内容。
CREATE TRIGGER tri_book1 ON T_Teacher
FOR INSERT,UPDATE,DELETE AS
SELECT * FROM T_Teacher
6.创建触发器tri_book2,当修改T_Teacher表中的TeacherCode字段值时,该字段在T_BookOrder表中的对应值也作修改。
CREATE TRIGGER tri_book2 ON T_BookOrder FOR UPDATE AS
UPDATE T_BookOrder
SET TeacherCode=(SELECT Inserted.TeacherCode FROM Inserted) WHERE TeacherCode=(SELECT TeacherCode FROM Deleted)
7.创建触发器tri_book3,检查插入在T_BookInfo表中的教材库存(StockNum)是否大于等于0。
CREATE TRIGGER tri_book3 ON T_BookInfo FOR INSERT,UPDATE AS
DECLARE @stocknum smallint
SELECT @stocknum=StockNum FROM inserted IF @stocknum<0 BEGIN ROLLBACK
RAISERROR('库存量必须大于等于0!',16,1) END
8.创建触发器tri_book4,当删除教师信息时同步删除T_BookOrder表中对应教师所预订的教材记录。
CREATE TRIGGER tri_book4 ON T_Teacher FOR DELETE AS
DELETE FROM T_BookOrder WHERE T_BookOrder.TeacherCode= (SELECT TeacherCode FROM deleted)
9.创建视图view_book1,使其包含预订数量最高的20%的教材信息。要求显示教材代号(BookCode)、教材名称(BookName)、ISBN号(ISBNCode)和出版社名称(Publisher)。
CREATE VIEW view_book1 AS
SELECT TOP 20 PERCENT T_BookOrder.BookCode, BookName, ISBNCode,StuBookNum+TeaBookNum AS 数量, Publisher FROM T_BookOrder INNER JOIN
(T_Publisher INNER JOIN T_BookInfo
ON T_Publisher.PublisherCode=T_BookInfo.PublisherCode) ON T_BookOrder.BookCode=T_BookInfo.BookCode ORDER BY StuBookNum+TeaBookNum DESC
10.创建视图view_book2,查询预订了教材名中含有“程序”一词的教师姓名(TeacherName)和所在学院名称(AcadName)。
CREATE VIEW view_book2 AS
SELECT TeacherName,AcadName
FROM T_Teacher,T_Academy,T_BookOrder,T_Bookinfo WHERE T_Bookinfo.BookCode=T_BookOrder.BookCode AND T_BookOrder.TeacherCode=T_Teacher.TeacherCode AND T_Teacher.AcadCode=T_Academy.AcadCode AND BookName LIKE '%程序%' 或
CREATE VIEW view_book2 AS
SELECT TeacherName,AcadName FROM T_Academy INNER JOIN (T_Teacher INNER JOIN
(T_BookOrder INNER JOIN T_Bookinfo
ON T_BookOrder.BookCode=T_Bookinfo.BookCode) ON T_Teacher.TeacherCode=T_BookOrder.TeacherCode) ON T_Academy.AcadCode=T_Teacher.AcadCode WHERE BookName LIKE '%程序%' 或
11.创建视图view_book3,使其包含“学院名称(AcadName)”、“教师姓名(TeacherName)”、“预订书名(BookName)”、“是否领走(TakeAway)”。
CREATE VIEW view_book3 AS
SELECT AcadName, TeacherName, BookName, TakeAway FROM T_BookInfo INNER JOIN T_BookOrder ON T_BookInfo.BookCode=T_BookOrder.BookCode INNER JOIN T_Teacher
ON T_BookOrder.TeacherCode = T_Teacher.TeacherCode INNER JOIN T_Academy
ON T_Teacher.AcadCode = T_Academy.AcadCode
10.4 实验四 SQL Server数据库管理
一.实验目的
本实验主要了解SQL Server数据库的安全机制和备份策略。通过本实验,读者将学会
在企业管理器中进行用户的创建和权限的管理以及数据库的备份和恢复。
二.实验环境
? Microsoft SQL Server 2000 企业管理器和Microsoft SQL Server 2000 查询分析器 ? Book数据库
三.实验内容
1.利用企业管理器将Book数据库完全备份到磁盘文件D:\\BookBackup中,然后使用备份文件D:\\BookBackup进行完全恢复操作。
备份操作参考步骤:
(1)选中数据库并执行备份菜单。在控制台根目录窗格选中要备份的数据库Book,单击右键找到“所有任务/备份数据库”菜单,如图6-1a;或选中数据库Book后使用菜单栏中“工具/备份数据库”菜单,如图6-1b。
.
图6-1a
图6-1b
(2) 在SQL Server备份窗口中选择备份策略为完全备份,点击添加按钮设置备份的目的设备,如图6-1c所示。
(3) 在选择备份目的窗口添加备份目的设备或文件,选择或设置目的文件为:D:\\BookBackup,如图6-1d所示。
(4) 在SQL Server备份窗口中选择重写方式为重写现有媒体,然后单击“确定”按钮执行备份,如图6-1e所示。
图6-1d
图6-1e
图6-1 c
恢复操作参考步骤:
(1) 在控制台根目录窗格选中数据库,点右键找到“所有任务/还原数据库”菜单;或选中数据库后使用菜单栏中“工具/还原数据库”菜单。
(2) 在“还原数据库窗口”中,设置“还原为数据库”的数据库名,可以使用原数据库名,也可重新命名。选择“还原”的备份源,如果选择“数据库”,在显示数据库备份中选择备份的数据,则系统在“要还原
1c
的的第一个备份”列表框中自动列出所有已生成在指定备份目录下的备份文件和时间,只要将备份文件的复选框选中,按确定按钮就开始数据库恢复。
2.利用企业管理器建立一个名称为“Book维护计划”的数据库维护计划,将Book数据库每天0:00备份到磁盘目录D:\\下,事务日志每隔6小时备份一次到磁盘目录D:\\下。
操作参考步骤:
选中要备份的数据库Book,单击右键找到“所有任务/维护计划”菜单;或选中数据库Book后使用菜单栏中“工具/数据库维护计划器”菜单。
3.将Book数据库中的教师信息表数据(T_Teacher)导出到Excel文件D:\\Teacher.xls。
操作参考步骤:
选中数据库Book,单击右键找到“所有任务/导出数据”菜单,进入DTS导入/导出/向导首页。
4.将Book数据库进行分离,然后再练习附加数据库Book_Data.MDF的操作。
操作参考步骤:
(1) 分离数据库:在“数据库”文件夹找到Book右击Book数据库选择“所有任务/分离数据库”菜单。 (2) 附加数据库:右击“数据库”,选择“所有任务/附加数据库”菜单。
5.利用企业管理器创建一个用户名为“MyMary”的用户,密码为“secret1234”,该用户对“Book”数据库中的T_Teacher表只有查询的权限,没有删除、插入和修改权限。以该用户名和密码通过查询分析器登录到SQL Server服务器,对T_Teacher表进行查询、插入、删除和修改操作来验证用户权限。
操作参考步骤:
(1) 在控制台根目录窗格,找到“安全性/登录/新建登录”菜单,创建一个名称为“MyMary”,密码为“secret1234”的SQL Server认证帐号。
(2) 展开Book数据库树形结构,在“用户”项上单击右键,选择“新建数据库用户”,创建一个名称为“MyMary”,密码为“secret1234”的用户。如果步骤(1)中已设好可访问数据库“Book”,则与该SQL Server认证帐号同名的用户帐户就自动加入该数据库的用户中,步骤(2)省略。 (3) 选中”MyMary”,右单击找到“属性”,对“MyMary”用户授规定的权限。 (4) 修改SQL Server登录帐号为”MyMary”
验证:(1)以”MyMary”登录查询分析器
(2) 删除验证: DELETE FROM T_Teacher WHERE TeacherCode='01010101' (3)插入验证: INSERT T_Teacher(TeacherCode,TeacherName,AcadCode,Sex,Title) VALUES('11111111','张三','11','女','讲师')
(4)修改验证: UPDATE T_Teacher SET TeacherCode='12345678' WHERE TeacherCode='11111111'
6.利用企业管理器修改上题中“MyMary”用户的权限,授予其对T_Teacher表的查询、插入和修改权限,重新再对该用户权限进行验证。
操作参考步骤:
选中“MyMary”用户,右单击找到“属性”,对“MyMary”的权限进行修改。 验证:如第5题
7.为Book数据库创建一个名称为“BookRole”的数据库角色,设置其对所有表具有Select
图1
权限,此外,对T_BookOrder表和T_BookInfo还具有修改、插入或删除权限,禁止在T_Teacher执行Delete操作。
操作参考步骤:
(1) 打开Book数据库文件夹,右击“角色”文件夹,并在弹出的菜单中选择“新建数据库角色”命令, 创建“BookRole”数据库角色。
(2)右击“BookRole” 角色,并在弹出的菜单中选择“属性”命令, 在属性对话框中单击“权限”按钮,对“BookRole” 角色的权限进行设置。
8.为Book数据库创建一个名称为“zhujiu”的用户,该用户对应SQL Server登录帐户“zhujiu”,将该用户添加为数据库角色BookRole的成员。
操作参考步骤:
(1) 创建名称为“zhujiu”的SQL Server认证帐号。
(2) 创建名称为“zhujiu”的用户,并将其添加为数据库角色BookRole的成员。
验证:如第5题设计相应的SQL命令进行用户权限的验证。
10.5 实验五 VB.NET程序设计基础和常用控件
一.实验目的
本实验主要了解面向对象程序设计语言VB.NET基本语言元素包括集成开发环境、语言基础、基本控制结构、过程、常用控件和界面设计。通过本实验,读者将学会一些主要的面向对象的设计方法并可以利用VB.NET完成简单的应用程序开发。
二.实验环境
? Microsofe Visual Studio .NET 2003和Book数据库
三.实验内容
1.设计一个Visual Basic.Net的应用程序,窗体上有一个多行文本框和3个命令按钮,程序界面如图1所示。要求应用程序运行时,当单击窗体上【显示文本信息】按钮,文本框中显示红色文字“我喜欢VB.NET,因为它简单易学,使用方便。”当单击窗体上【改变背景色】按钮,文本框的背景色变为黄色。当单击窗体上【结束】按钮,程序结束。保存该应用程序。
图1
图2
窗体对象属性 对象 属性 设置值
Form1 Text Text Text Text 第一个VB.NET实验 显示文本信息 改变背景色 结束 Textbox1 Text Button1 Button2 Button3
Private Sub Button1_Click(……) Handles Button1.Click
TextBox1.Text = \我喜欢VB.NET,因为它简单易学,使用方便。\End Sub
Private Sub Button2_Click(……) Handles Button2.Click TextBox1.BackColor = Color.Yellow End Sub
Private Sub Button3_Click(……) Handles Button3.Click End End Sub
2.试编一程序,将华氏温度转换为摄氏温度。程序运行时,单击窗体上【开始】按钮,提示输入华氏温度(用InputBox函数),然后将华氏温度转化为摄氏温度,并在窗体上显示华氏温度和摄氏温度。转换公式为:C=5/9*(F-32),其中,F是华氏温度,C是摄氏温度。程序界面如图2所示。
窗体对象属性 对象 Button1 Label1 Label2 Label3 Label4
Private Sub Button1_Click(……) Handles Button1.Click Dim c As Single Dim f As Single
f = Val(InputBox(\请输入华氏温度\ c = 5.0 / 9 * (f - 32)
Label3.Text = Format(f, \ Label4.Text = Format(c, \End Sub
属性 Text Text Text Text Text 设置值 开始 华氏温度 摄氏温度 Textbox1 Text
3.设计一程序,窗体界面如图3所示。要求在程序运行时,根据选择可以改变文本框内文本的字体、字形等。
图4
图3 图4
窗体对象属性
对象 Textbox1 Button1 GroupBox1 GroupBox 2 属性 Text Text Text Text 退出 颜色设置 字形设计 设置值 RadioButton1 Text 红色 Checked True RadioButton2 Text RadioButton3 Text CheckBox1 CheckBox2 CheckBox3
Private Sub Form1_Load(……) Handles MyBase.Load TextBox1.ForeColor = Color.Red
TextBox1.Font = New Font(TextBox1.Font.FontName, 12, FontStyle.Underline)
TextBox1.Text = \是面向对象的程序设计语言,简单易学,深受程序设计者喜欢\ TextBox1.SelectionStart = 0 End Sub
Private Sub RadioButton1_CheckedChanged(……) Handles RadioButton1.CheckedChanged, _ RadioButton2.CheckedChanged, RadioButton3.CheckedChanged If RadioButton1.Checked Then TextBox1.ForeColor = Color.Red ElseIf RadioButton2.Checked Then TextBox1.ForeColor = Color.Green Else
TextBox1.ForeColor = Color.Blue End If End Sub Private
Sub
CheckBox1_CheckedChanged(……)
Handles
CheckBox1.CheckedChanged,
CheckBox2.CheckedChanged, CheckBox3.CheckedChanged Dim newFontStyle As System.Drawing.FontStyle newFontStyle = FontStyle.Regular If CheckBox1.Checked Then
newFontStyle = newFontStyle + FontStyle.Underline End If
If CheckBox2.Checked Then
newFontStyle = newFontStyle + FontStyle.Bold
绿色 蓝色 Text 下划线 Checked True Text Text 粗体 斜体 End If
If CheckBox3.Checked Then
newFontStyle = newFontStyle + FontStyle.Italic End If
TextBox1.Font = New Font(TextBox1.Font.Name, TextBox1.Font.Size, newFontStyle) End Sub
Private Sub Button1_Click(……) Handles Button1.Click End End Sub
4. 设计一程序,其界面如图4所示,程序运行时,单击“添加”按钮,可将文本框的内容添加到列表框中;单击“删除”按钮,可删除选中的内容;单击“清除”按钮,清除列表框中的所有内容;双击列表框中某一项,该项内容可在文本框中显示。
窗体对象属性
对象 Label1 属性 歌星排行榜 Text 设置值 Textbox1 Text ListBox1 Items 刘德华 周杰伦 张惠妹 Button1 Button2 Button3
Private Sub Button1_Click(……) Handles Button1.Click Dim i As Integer
For i = 0 To ListBox1.Items.Count - 1
If TextBox1.Text = ListBox1.Items(i) Then Exit For End If Next
If i >= ListBox1.Items.Count Then ListBox1.Items.Add(TextBox1.Text) TextBox1.Text = \ End If End Sub
Private Sub Button2_Click(……) Handles Button2.Click ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) End Sub
Private Sub Button3_Click(……) Handles Button3.Click ListBox1.Items.Clear() End Sub
Private Sub ListBox1_DoubleClick(……) Handles ListBox1.DoubleClick
Text Text Text 添加 删除 清除 TextBox1.Text = ListBox1.SelectedItem End Sub
5-2
5.设计一个具有3个窗体的应用程序。其中“算术运算”窗口具有主菜单,菜单内容如图5a、5b所示;“加、减运算”和“乘、除运算”窗口具有弹出式菜单,如图5c、5d所示。应用程序运行时,可从“算术运算”窗口的主菜单中选择“计算加、减”或“计算乘、除”菜单命令,进入“加、减运算”窗口或“乘、除运算”窗口,然后从键盘上输入两个数到文本框中,利用窗体上的弹出式菜单命令求出它们的和、差或乘、除,并显示运算结果。
图5a
图5b 图5c 图5d
窗体Form1对象属性 对象 属性 设置值 Form1 Text 算术运算 MenuItem1 Text 计算 MenuItem2 Text 计算加、减 MenuItem3 Text 计算乘、除 MenuItem4 Text 退出 MenuItem5 Text 结束
窗体Form2对象属性 窗体Form3对象属性 对象 属性 设置值 对象 属性 设置值 Form2 Text 加、减运算 Form3 Text 乘、除运算 ContextMenu ContextMenu1 ContextMenu ContextMenu Label1 Text 第一个数 Label1 Text 第一个数 Label2 Text 第二个数 Label2 Text 第二个数 Label3 Text 计算结果 Label3 Text 运算结果 Textbox1 Text Textbox1 Text Textbox2 Text Textbox2 Text Textbox3 Text Textbox3 Text ContextMenu1 ContextMenu1 MenuItem1 Text 加运算 MenuItem1 Text 乘运算 MenuItem2 Text 减运算 MenuItem2 Text 除运算 MenuItem3 Text 清除 MenuItem3 Text 清除 MenuItem4 Text 返回 MenuItem4 Text 返回 //窗体“算术运算”
Private Sub MenuItem2_Click(……) Handles MenuItem2.Click
图 Dim frm2 As New Form2 Me.Hide() frm2.Show() End Sub
Private Sub MenuItem3_Click(……) Handles MenuItem3.Click Dim frm3 As New Form3 Me.Hide() frm3.Show() End Sub
Private Sub MenuItem5_Click(……) Handles MenuItem5.Click End End Sub
//窗体“加、减运算”
Private Sub MenuItem1_Click(……) Handles MenuItem1.Click
TextBox3.Text = Val(TextBox1.Text.Trim) + Val(TextBox2.Text.Trim) End Sub
Private Sub MenuItem2_Click(……) Handles MenuItem2.Click
TextBox3.Text = Val(TextBox1.Text.Trim) - Val(TextBox2.Text.Trim) End Sub
Private Sub MenuItem3_Click(……) Handles MenuItem3.Click TextBox1.Text = \ TextBox2.Text = \ TextBox3.Text = \End Sub
Private Sub MenuItem4_Click(……) Handles MenuItem4.Click Dim frm1 As New Form1 Me.Hide() End Sub
//窗体“乘、除运算”
Private Sub MenuItem1_Click(……) Handles MenuItem1.Click TextBox3.Text = Val(TextBox1.Text) * Val(TextBox2.Text) End Sub
Private Sub MenuItem2_Click(……) Handles MenuItem2.Click If Val(TextBox2.Text) = 0 Then MsgBox(\除数为0,出错!\ TextBox1.Text = \ TextBox2.Text = \ Exit Sub Else
TextBox3.Text = Format(Val(TextBox1.Text) * 1.0 / Val(TextBox2.Text), \ End If End Sub
Private Sub MenuItem3_Click(……) Handles MenuItem3.Click TextBox1.Text = \
TextBox2.Text = \ TextBox3.Text = \End Sub
Private Sub MenuItem4_Click(……) Handles MenuItem4.Click Dim frm1 As New Form1 Me.Hide() frm1.Show() End Sub
10.6 实验六 VB.NET数据库应用程序(1)
一.实验目的
通过本实验,学习和掌握ADO.NET中对象SqlDataAdapter和对象DataSet的应用,同时掌握通过绑定对象实现数据库的数据浏览操作和更新操作。
二.实验环境
? Microsofe Visual Studio .NET 2003和Book数据库 三.实验内容
1.利用绑定对象编程实现对Book数据库中教材订购表的信息浏览和信息更新,功能界面见下图
图10-34 用数据绑定实现表T_BookOrder的数据浏览和更新
实验辅导:
定义绑定对象:Dim BookOrder_bind As BindingManagerBase
设置绑定数据源:BookOrder_bind = BindingContext(DataSet11, \翻到头:BookOrder_bind.Position = 0
前翻:BookOrder_bind.Position = BookOrder_bind.Position - 1 后翻:BookOrder_bind.Position = BookOrder_bind.Position + 1 翻到尾:BookOrder_bind.Position = BookOrder_bind.Count - 1 增加一门新课程:BookOrder_bind.AddNew()
删除一门课程:BookOrder_bind.RemoveAt(BookOrder_bind.Position)
窗体对象属性 对象 Label1 Text 属性 设置值 教材订购信息查询 GroupBox1 Label2 Label3 Label4 Label5 Label6 Label7 Label8 Textbox1 Textbox2 Textbox3 Textbox4 Textbox5 Textbox6 Button1 Button2 Button3 Button4 Button5 Button6 Button7 Button8 Button9 DataGrid1
//窗体加载
Text Text Text Text Text Text Text Text DataBindings.Text DataBindings.Text DataBindings.Text DataBindings.Text DataBindings.Text DataBindings.Text Text Text Text Text Text Text Text Text Text 教材订购信息浏览 教材编号 教师编号 学生人数 教师人数 订购时间 领取否 备注 DataSet11-T_BookOrder.BookCode DataSet11-T_BookOrder.TeacherCode DataSet11-T_BookOrder.StuBookNum DataSet11-T_BookOrder.TeaBookNum DataSet11-T_BookOrder.TakeAway DataSet11-T_BookOrder.Description DataSet11-T_BookOrder.OrderTime |< << >> >| 订购新教材 删除教材 撤销更新 确认更新 退出系统 DataTimePicker1 DataBindings.Text Private Sub Form1_Load(……) Handles MyBase.Load SqlDataAdapter1.Fill(Me.DataSet11.T_BookOrder)
BookOrder_bind = Me.BindingContext(DataSet11, \ DataGrid1.DataSource = DataSet11.Tables(\ End Sub //翻到首记录
Private Sub Button1_Click(……) Handles Button1.Click BookOrder_bind.Position = 0
DataGrid1.CurrentRowIndex = BookOrder_bind.Position End Sub
//前翻一条记录
Private Sub Button2_Click(……) Handles Button2.Click BookOrder_bind.Position = BookOrder_bind.Position - 1 DataGrid1.CurrentRowIndex = BookOrder_bind.Position End Sub //后翻一条记录
Private Sub Button3_Click(……) Handles Button3.Click
BookOrder_bind.Position = BookOrder_bind.Position + 1 DataGrid1.CurrentRowIndex = BookOrder_bind.Position End Sub //翻到尾记录
Private Sub Button4_Click(……) Handles Button4.Click BookOrder_bind.Position = BookOrder_bind.Count - 1 DataGrid1.CurrentRowIndex = BookOrder_bind.Position End Sub
// 单击DataGrid1绑定对象指针同步移动
Private Sub DataGrid1_Click(……) Handles DataGrid1.Click BookOrder_bind.Position = DataGrid1.CurrentRowIndex End Sub
//增加记录
Private Sub Button5_Click(……) Handles Button5.Click BookOrder_bind.AddNew() End Sub
//删除记录
Private Sub Button6_Click(……) Handles Button6.Click BookOrder_bind.RemoveAt(BookOrder_bind.Position) End Sub //取消修改
Private Sub Button7_Click(……) Handles Button7.Click BookOrder_bind.CancelCurrentEdit() End Sub
//确定修改
Private Sub Button8_Click(……) Handles Button8.Click BookOrder_bind.EndCurrentEdit()
SqlDataAdapter1.Update(Me.DataSet11.T_BookOrder) End Sub //退出系统
Private Sub Button9_Click(……) Handles Button9.Click End
End Sub
2.按书名查询书的作者、价格和出版社名称:输入书名中的部分字或词,查询所有相关书的情况。运行效果如图10-x所示。
10-x 根据书名查询书的情况
提示:
(1)构造Select语句时:查询结果来自T_BookInfo和T_Publisher两个表;使用Like运算构造查询条件,使用As为查询字段重命名为中文;
(2)DataGrid标题“查询结果”的设置通过DataGrid的CaptionText属性实现。
窗体对象属性
对象 Form1 Label1 属性 Text Text Text Text 设置值 书籍查询 请输入书名 查询 Textbox1 Button1
DataGrid1 CaptionText 查询结果 Private Sub Button1_Click(……) Handles Button1.Click
Dim sql As String = \书名,price as 价格,publisher as 出版社\ & \
& \ & \ Dim myconn As New SqlConnection(\ \
Dim myadapter As SqlDataAdapter = New SqlDataAdapter(sql, myconn) Dim mydataset As New Data.DataSet myadapter.Fill(mydataset, \
DataGrid1.DataSource = mydataset.Tables(\ End Sub
3.通过查询实验三第11题所创建的视图view_book3,实现查询各学院领书情况,如图10-k所示。
图10-k 各学院领书情况
提示:
查询学院使用ComboBox选择。可以先创建数据集,使用ComboBox的DataSource属性设置数据集,使用ComboBox的DisplayMember属性设置显示数据集的数据字段。
窗体对象属性
对象 Form1 Label1 属性 Text Text 设置值 学院领书情况 选择学院 ComboBox1 Text DataGrid1
Private Sub Form1_Load(……) Handles MyBase.Load
CaptionText 查询结果 Dim sql As String = \
Dim myconn As New SqlConnection(\ & \
Dim myadapter As SqlDataAdapter = New SqlDataAdapter(sql, myconn) Dim mydataset As New Data.DataSet myadapter.Fill(mydataset, \学院名\
ComboBox1.DataSource = mydataset.Tables(\学院名\
ComboBox1.DisplayMember = mydataset.Tables(\学院名\ End Sub
Private Sub ComboBox1_SelectedIndexChanged(……) Handles ComboBox1.SelectedIndexChanged Dim sql As String = \ & \ Dim myconn As New SqlConnection(\ & \
Dim myadapter As SqlDataAdapter = New SqlDataAdapter(sql, myconn) Dim mydataset As New Data.DataSet myadapter.Fill(mydataset, \
DataGrid1.DataSource = mydataset.Tables(\ End Sub
10.7 实验七 VB.NET数据库应用程序(2)
一.实验内容
通过本次实验,学习和掌握ADO.NET中对象SqlCommand的应用;学习存储过程的调用。
二.实验环境
? Microsofe Visual Studio .NET 2003和Book数据库
三.实验内容
SqlCommand对象既可以完成对数据库的读操作,又可以完成对数据库的写操作。本实验要求完成下列数据库访问操作:
1. 用SqlCommand完成数据查询操作。具体要求如下:
从控件ComboBox1中选择不同的书号时,右侧的教材订购信息将随之变化。即实现查询功能:给定教材代号,查出相应教材的教材名称,统计学生订数和教师订数。运行界面如图10-35所示。
图10-35查询界面
提示:界面功能分类使用的是TabControl1控件,在该控件中添加两个标签TabPage1、TabPage2(在该控件上右击“添加选项卡”,选项卡的标题属性通过选择TabPages属性弹出TabPage集合编辑器下设置Text属性完成),分别完成“教材订购信息查询”功能和“教材增订”功能。程序设计步骤可以分为两步:首先用查询完成控件ComboBox1中书号的填充;在此基础上完成选定书号的相关教材订购数量的查询。
窗体对象属性 对象 TabControl1 TabPages: TabPage1 TabPage2 Label1 Label2 Label3 Label4 Textbox1 Textbox2 Textbox3
//加载窗体
Private Sub Form1_Load(……) Handles MyBase.Load
Dim sql As String = \ Dim sql2 As String = \ Dim myconn As New SqlConnection(\ & \ Dim myadpter1 As New SqlDataAdapter(sql, myconn) Dim mydataset1 As New Data.DataSet myadpter1.Fill(mydataset1, \教材号\
ComboBox1.DataSource = mydataset1.Tables(\教材号\
ComboBox1.DisplayMember = mydataset1.Tables(\教材号\ ComboBox2.DataSource = mydataset1.Tables(\教材号\
ComboBox2.DisplayMember = mydataset1.Tables(\教材号\
属性 设置值 教材订购信息查询 教材增订 选择教材代号 教材名称 学生订书 教师订书 Text Text Text Text Text Text Text ComboBox1 Text Dim myadpter2 As New SqlDataAdapter(sql2, myconn) Dim mydataset2 As New Data.DataSet myadpter2.Fill(mydataset2, \工号\
ComboBox3.DataSource = mydataset2.Tables(\工号\
ComboBox3.DisplayMember = mydataset2.Tables(\工号\End Sub
//在组合框中选择教材代号产生SelectedIndexChanged事件
Private Sub ComboBox1_SelectedIndexChanged(……) Handles ComboBox1.SelectedIndexChanged Dim sql As String = \ & \ & \
& \ & ComboBox1.Text & \
Dim myconn As New SqlConnection(\ & \
Dim mycmd As SqlCommand = New SqlCommand(sql, myconn) Dim myread As SqlDataReader myconn.Open()
myread = mycmd.ExecuteReader If myread.Read Then
TextBox1.Text = myread.Item(0) TextBox2.Text = myread.Item(1) TextBox3.Text = myread.Item(2) Else
TextBox1.Text = \ TextBox2.Text = \ TextBox3.Text = \ End If End Sub
2.用SqlCommand完成数据更新操作。运行界面见图10-36。 具体要求如下:
运行界面中的两个组合框,分别用于选择教材代号和教师工号,一个文本框用于输入学生订书量、教师订书量和订书日期,通过“确定”按钮完成教材增订的录入功能。“取消”钮的功能是清空三个控件的内容。
图10-36数据更新界面
提示:该功能可以用SqlCommand的ExecuteNonQuery()方法完成,数据库更新语句为“Insert Into”,注意在插入新记录时,所有非空字段必须添入值。
窗体对象属性 Label5 Label6 Label7 Label8 Label9 Label10 TextBox5 TextBox6 TextBox7 Text 请输入教材信息 Text 教材代号 Text 教师工号 Text 学生订书 Text 教师订书 Text 订书日期 Text Text Text ComboBox2 Text ComboBox3 Text Button1 Button2
//单击“增订教材”选页上的“确定”按钮增订教材 Private Sub Button1_Click(……) Handles Button1.Click
Dim sql As String = \ & \ & \ & ComboBox3.Textg & \ & Val(TextBox5.Text) & \
& Val(TextBox6.Text) & \
Dim myconn As New SqlConnection(\ & \ Dim mycmd As SqlCommand = New SqlCommand(sql, myconn) Dim i As Integer myconn.Open() Try
Text 确定 Text 取消 i = mycmd.ExecuteNonQuery() '这里用i变量检查命令执行影响的数据行数 If i > 0 Then
MsgBox(\插入成功\ End If
Catch ex As Exception MsgBox(ex.Message) End Try myconn.Close() End Sub
//单击“增订教材”选页上的“取销”按钮,清空文本框中的信息 Private Sub Button2_Click(……) Handles Button2.Click
ComboBox2.Text = \ComboBox3.Text = \TextBox5.Text = \
TextBox6.Text = \ TextBox7.Text = \End Sub
3.实现如图10-y所示的程序,实现对T_Publisher表信息的查询和维护。
窗体对象属性
对象 Label1 Label2 Label3 Text Text Text 属性 出版社代号 出版社名 联系电话 查询 添加 删除 确认修改 取消修改
//查询
Private Sub Button1_Click(……) Handles Button1.Click
设置值 Textbox1 Text Textbox2 Text Textbox3 Text Button1 Button2 Button3 Button4 Button5
Text Text Text Text Text Dim sql As String = \ & \
Dim myconn As New SqlConnection
myconn.ConnectionString = \ & \ Dim mycmd As SqlCommand = New SqlCommand(sql, myconn) Dim myread As SqlDataReader myconn.Open()
myread = mycmd.ExecuteReader If (myread.Read) Then
TextBox2.Text = myread.Item(0) TextBox3.Text = myread.Item(1) Else
TextBox2.Text = \ TextBox3.Text = \ End If
myconn.Close() End Sub //插入
Private Sub Button2_Click(……) Handles Button2.Click
Dim sql As String = \ & TextBox1.Text & \
& TextBox2.Text & \
Dim myconn As New SqlConnection(\ & \
Dim mycmd As SqlCommand = New SqlCommand(sql, myconn) Dim i As Integer myconn.Open() Try
i = mycmd.ExecuteNonQuery() If i > 0 Then
MsgBox(\记录插入成功\ TextBox1.Text = \ TextBox2.Text = \ TextBox3.Text = \ End If
Catch ex As Exception MsgBox(ex.Message) End Try myconn.Close() End Sub //删除
Private Sub Button3_Click(……) Handles Button3.Click
Dim sql As String = \
& \
Dim myconn As New SqlConnection(\ & \
Dim mycmd As SqlCommand = New SqlCommand(sql, myconn) Dim i As Integer myconn.Open() Try
i = mycmd.ExecuteNonQuery() If i > 0 Then
MsgBox(\记录删除成功\ TextBox1.Text = \ TextBox2.Text = \ TextBox3.Text = \ End If
Catch ex As Exception MsgBox(ex.Message) End Try myconn.Close() End Sub //确认修改
Private Sub Button4_Click(……) Handles Button4.Click
Dim sql As String = \ & TextBox2.Text & \ & TextBox3.Text & \
& \
Dim myconn As New SqlConnection(\ & \
Dim mycmd As SqlCommand = New SqlCommand(sql, myconn) Dim i As Integer myconn.Open() Try
i = mycmd.ExecuteNonQuery() If i > 0 Then
MsgBox(\记录修改成功\ TextBox1.Text = \ TextBox2.Text = \ TextBox3.Text = \ End If
Catch ex As Exception MsgBox(ex.Message) End Try myconn.Close() End Sub
//取消修改
Private Sub Button5_Click(……) Handles Button5.Click
Dim sql As String = \ & \
Dim myconn As New SqlConnection
myconn.ConnectionString = \ & \ Dim mycmd As SqlCommand = New SqlCommand(sql, myconn) Dim myread As SqlDataReader myconn.Open()
myread = mycmd.ExecuteReader If (myread.Read) Then
TextBox2.Text = myread.Item(0) TextBox3.Text = myread.Item(1) Else
TextBox2.Text = \ TextBox3.Text = \ End If
myconn.Close()
End Sub
4.通过调用实验三第2题所创建的存储过程proc_book2,实现程序查询指定图书的预订数量,如图10-z所示。
图10-z调用存储过程查询教材预订量
窗体对象属性
对象 Label1 Label2 Label3 Button1
Private Sub Button1_Click(……) Handles Button1.Click
Dim myconn As New SqlConnection(\ & \ Dim mycmd As SqlCommand
属性 Text Text Text Text 设置值 书号 预订数量 查询 Textbox1 Text mycmd = New SqlCommand(\ mycmd.CommandType = CommandType.StoredProcedure
Dim myParm As SqlParameter = mycmd.Parameters.Add(\ myParm.Value = TextBox1.Text myconn.Open()
Label3.Text = Format(mycmd.ExecuteScalar, \ myconn.Close() End Sub
10.8 实验八 VB.NET数据报表和数据图表
一.实验目的
掌握利用Crystal Reports for VS.NET创建数据报表和数据图表的基本方法和操作步骤;熟练掌握利用“标准报表专家”向导创建水晶报表;掌握在嵌入式 Crystal Report Designer中设计和调整水晶报表布局的方法和技巧;掌握水晶报表数据访问的拉(PULL)模式和推(PUSH)模式的实现方法;了解图表延伸的实现方法;掌握水晶报表的导出与打印。
二.实验环境
? Microsofe Visual Studio .NET 2003和Book数据库
三.实验内容
1. 利用Crystal Reports创建一个如图10-37所示的教材一览表。提示:使用报表专家。
图10-37 教材一览表
教材一览表初始布局:
教材一览表最终布局:
教材一览表:
2.创建一个如图10-39所示的机械工业出版社教材一览表。提示:可使用“来自于现有的报表”创建。 图10-39 机械工业出版社教材
机械工业出版社教材一览表初始布局:
机械工业出版社教材一览表最终布局:
机械工业出版社教材一览表:
3.创建教师一览表。
(1)创建一个如图10-40所示的教师一览表。要求按学院分组显示每个学院下的教师姓名、职称、性别和联系电话,并统计每个学院的教师人数以及该校教师总人数。提示:使用报表专家。
图10-40教师一览表
正在阅读:
信息系统与数据库技术实验指导答案10-29
高中英语:Unit 3 A taste of English humor Reading(新人教必修03-02
2017-2018年度新北师大版6六年级数学上册全册教案06-09
《狼王梦》阅读检测题及答案10-22
中央空调使用说明书 - 图文04-07
农村中职学校校企合作的瓶颈及对策06-18
“讲政治、敢担当、改作风”专题党课02-23
柯达伊教学体系的价值及应用10-19
商贸总公司2021年工作规划范文08-17
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 答案
- 指导
- 实验
- 数据库
- 系统
- 技术
- 信息
- 拟人与通感
- 危险源辨识、风险控制与分析评价管理办法
- 供热服务承诺书
- 四章非金属及其化合物4.4氨、硫酸、硝酸第2课时导学案 新人教版必修1
- SD-2隧道右洞截水沟施工方案
- 健 美 操 练习题- 绍兴文理学院本科教学“质量工程”网站 - 首页
- JSP期末考试(A卷)
- 商业银行会计讲义
- 浅谈项目管理在电子专用设备制造领域的应用
- 水利基础知识+水法律法规测试题
- 疫苗制品工岗位实习周记原创范文
- 第一章 蛋白质的结构与功能
- 新国际贸易实务补充教材
- 咸宁旅游业发展情况汇报
- 防范网络诈骗和校园贷风险心得体会
- 实验15花的基本形态、内部结构及花序类型 - 基础生物学实验(安徽大学研究生复试用,生物 生命科学) - 图文
- 青岛市人事局文件
- 湖北省人民政府关于进一步推进全省义务教育均衡发展的意见 鄂政发〔2010〕16号
- 2015高职化工生产技术规程 - 图文
- 《管理系统中计算机应用》(课程代码00051)校考试题答案 - 图文