1.17k likes | 1.38k Views
第 12 章 SQL Server 应用程序开发. 12.1 使用 Access 开发 SQL Server 应用程序.
E N D
12.1使用Access开发SQL Server应用程序 • 在Access 2000或更高版本中,可以使用Access项目对SQL Server数据库高效、方便的访问。使用Access项目可以轻松地创建客户/服务器应用程序。操作Access项目与操作Access数据库非常相似。除了要连接到SQL Server数据库外,在Access项目中创建和应用窗体、报表、数据访问页、宏和模块的方法,与在Access数据库中所用的方法是相同的。下面以Access 2000为例来介绍如何使用Access来开发SQL Server应用程序。
12.1.1创建Access项目 • Access项目是一种Access数据文件,它能通过OLE DB组件结构有效地以本地模式访问SQL Server数据库。OLE DB是一种组件数据库体系,它对多种类型数据源实现有效的网络和Internet访问。使用Access项目可以轻松地创建一个客户/服务器应用程序,既可以是基于窗体、报表的传统解决方案,也可以是通过数据访问页实现的基于Web的解决方案,或是两者的结合。
12.1.1创建Access项目 • Access项目中只包含基于代码或基于HTML的数据库对象:窗体、报表、数据访问页的名称及位置、宏和模块,这些都是用于创建应用程序的数据库对象。与Access数据库区别在于,Access项目不包含任何基于对象的数据或数据定义:表、视图、数据库图表、存储过程或用户定义函数,这些数据库对象存储在SQL Server数据库中,通过OLE DB可以将它们与Access项目连接起来。 • 在Access 2002中,可以创建一个Access项目并将它与SQL Server数据库连接。通常有以下三种情况。
1.创建Access项目并将其与现有 SQL Server数据库连接 • 启动Access 2002,然后从“文件”选单中选择“新建”命令。 • 在“新建文件”任务窗格中,单击“项目(现有数据)”,在 “文件新建数据库”对话框中,单击“保存位置”框中的一个地址,并在“文件名”框中键入项目文件名,确保“Microsoft Access项目”出现在“保存类型”框中,之后,单击“创建”按钮。 • 当出现 “数据链接属性”对话框时,选择“连接”选项卡,然后选择或输入要登录的服务器名称。
提供登录到服务器上所需的信息,为此应执行下列操作之一:提供登录到服务器上所需的信息,为此应执行下列操作之一: • 若要使用Windows账户登录到SQL Server服务器,请单击“使用Windows NT集成安全设置”选项。 • 若要使用指定的登录ID和密码登录到SQL Server服务器,请单击“使用指定的用户名称和密码”选项,并输入相应的用户名称和密码。 • 选中“在服务器上选择数据库”选项,然后在该选项下面的下拉式列表中选择要连接的SQL Server数据库(如示例数据库Northwind)。
单击“确定”按钮,完成到指定数据库的连接,此时该数据库中包含的各个对象将显示在“项目”窗口中,如图12.4所示。单击“确定”按钮,完成到指定数据库的连接,此时该数据库中包含的各个对象将显示在“项目”窗口中,如图12.4所示。
2创建SQL Server数据库并将其与Access项目连接步骤 • 从“文件”选单中选择“新建”命令。 • 在“新建文件”窗格中,单击“项目(新数据)”, • 在“文件新建数据库”对话框中,单击“保存位置”框中的一个地址,并在“文件名”框中键入一个名称,然后单击“创建”按钮。
在如图12.6所示的“Microsoft SQL Server数据库向导”对话框中,键入要使用的服务器的名称、在服务器上具有CREATE DATABASE权限的账户的登录ID和密码以及新SQL Server数据库的名称,然后单击“下一步”按钮。
注意 • 如果正在创建一个SQL Server 6.5数据库,请输入数据库设备和大小、事务处理日志设备和大小、数据库的大小和日志的大小。无需为SQL Server 7.0或更高版本指定设备和大小。在Access 2000中,可以使用Microsoft SQL Server数据库向导创建SQL Server 6.5或SQL Server 7.0 数据库。若要Microsoft SQL Server数据库向导创建SQL Server 2000 数据库,则应使用Access 2002。
3创建不与SQL Server数据库连接的Access项目 • 步骤 • 从“文件”选单中选择“新建”命令。 • 在“新建文件”任务窗格中的“新建”下,单击“项目(现有数据)”。 • 在“文件新建数据库”对话框中,单击“保存位置”框中的一个地址,然后在“文件名”框中键入文件名;确保“Microsoft Access项目”出现在“保存类型”框中,然后单击“创建”按钮。 • 当出现“数据链接属性”对话框时,单击“取消”按钮。 • 如果以后想将该项目与指定的SQL Server数据库连接起来,请在“文件”选单中选择“连接”命令,然后设置所需的连接信息。
12.1.2打开Access项目 • 步骤 • (1)在“文件”选单中选择“打开”命令。 • (2)单击“打开”对话框左侧的快捷方式,或者在“查找范围”框中单击包含要打开的Access项目的驱动器或文件夹。 • 若要查看以前打开过的Access项目的快捷方式列表,请单击“打开”对话框左侧的“历史”。 • (3)在文件夹列表中双击文件夹,直到打开包含Access项目的文件夹。 • 如果找不到想要打开的Access对象,请单击“打开”对话框右上角的“工具”,然后单击“查找”,并在“查找”对话框中输入搜索条件。
(4)单击打开的Access项目文件,然后执行下列操作之一:(4)单击打开的Access项目文件,然后执行下列操作之一: • 若要打开Access项目,请单击“打开”按钮。 • 若要以只读访问方式打开Access项目,请单击“打开”箭头,然后选择“以只读方式打开”命令。 • 在Access 2002中,可以只以独占模式打开Access项目。如果试图打开一个其他用户已经打开的Access项目,则Access会提示用户打开了该文件的一个只读副本。 • 需要说明的是,当以只读模式打开Access项目时,仍然可以添加或修改数据,创建或修改表、视图、数据库图表或存储过程,因为数据和这些对象是驻留在SQL Server数据库中。然而,不能创建或修改窗体、报表、宏或模块,因为这些对象是驻留在Access项目中的。
12.1.3 连接到SQL Server数据库 • 下面介绍将Access项目连接到SQL Server数据库,或者更改Access项目与SQL Server数据库的连接方法。 • 在Access 2002在,打开要连接到SQL Server数据库的Access项目。 • (1)从“文件”选单中选择“连接”命令。 • (2)在如图12.8所示的“数据链接属性”对话框中,选择“连接”选项卡。 • 从下拉列表中选择一个服务器名,或键入想要访问数据库所在的服务器位置。单击“刷新”按钮,可以刷新服务器列表。
下面介绍将Access项目连接到SQL Server数据库,或者更改Access项目与SQL Server数据库的连接方法。 • 在Access 2002在,打开要连接到SQL Server数据库的Access项目。 • (1)从“文件”选单中选择“连接”命令。 • (2)在 “数据链接属性”对话框中,选择“连接”选项卡。 • (3)从下拉列表中选择一个服务器名,或键入想要访问数据库所在的服务器位置。单击“刷新”按钮,可以刷新服务器列表。
(4)输入登录到服务器所需的信息,可以使用Windows NT集成安全机制,也可以使用指定的用户名和密码。 • (5)从所选服务器上,选择要连接的SQL Server数据库。 • 若要测试所做的设置是否正确,请单击“测试连接”按钮。此时,将尝试连接到指定的SQL Server数据库。如果连接失败,请确保设置是正确的。 • (6)单击“确定”按钮。
12.1.4 使用数据库表 • 在Access 2002中,既可以创建一个Access项目并将其与现有SQL Server数据库连接,也可以创建一个SQL Server数据库并将其与Access项目连接。无论是哪一种情况,只要打开了Access数据库中使用表设计器一样。所不同的是,对于Access项目来说,表存储在SQL Server数据库中;对于Access数据库来说,表即存储在该数据库中。
下面介绍通过Access项目在SQL Server数据库创建表的方法。 • 步骤 • 启动Access 2002,然后从“文件”选单中选择“新建”命令。 • 在“新建文件”窗格中,单击“项目(新数据)”。 • 在“文件新建数据库”对话框中,单击“保存位置”框中的一个地址,并在“文件名”框中键入一个名称(例中为Students),然后单击“创建”按钮。 • 当出现“Microsoft SQL Server数据库向导”对话框时,键入要使用的服务器的名称、在服务器上具有CREATE DATABASE权限的账户的登录ID和密码以及新SQL Server数据库的名称(例中为StudentsSQL),然后单击“下一步”按钮.
在随后出现的对话框中,单击“完成”按钮,以完成StudentsSQL数据库的创建。在随后出现的对话框中,单击“完成”按钮,以完成StudentsSQL数据库的创建。 • 在如图12.10所示的项目窗口中,单击对象栏下方的“表”,然后执行下列操作之一:
单击项目窗口工具栏上的“新建”按钮。 • 在项目窗口中双击“使用设计器创建表”。 • 此时出现如图12.11所示的表设计器窗口,该窗口与SQL Server 2000的表设计器基本相同。表设计器上部网格中的每一行对应表中的一列。
创建表时,需要对表中的每一列进行定义:在上部网格中指定列名称、选择数据类型并键入列说明文本,然后在窗口下部的“列”选项卡中对列的各种属性进行设置。创建表时,需要对表中的每一列进行定义:在上部网格中指定列名称、选择数据类型并键入列说明文本,然后在窗口下部的“列”选项卡中对列的各种属性进行设置。 • 按照要求,完成Students表结构的定义,并将student_id列设置为表的主键,然后单击工具栏中的“保存”按钮。 • 当出现如图12.12所示的“选择名称”对话框时,在“输入表名称”框中输入Students,然后单击“确定”按钮。
按照要求,完成Courses表结构的定义。 • 按照要求,完成Scores表结构的定义。 • 完成数据库表结构定义后,若要向表中输入数据或查看表中的数据,请单击该表,然后单击项目窗口工具栏上的“打开”按钮;若要修改表结构,请单击项目窗口工具栏上的“设计”按钮;若要删除一个表,请在项目窗口中单击该表,然后单击项目窗口工具栏上的“删除”按钮。
12.1.5 使用图表 • 为了使数据库可视化,可以创建一个或更多的关系图,以显示数据库中的部分或全部表、列、键和关系。对于任何数据库都可以创建任意多个数据库关系图;每个数据库表可以出现在任意多个关系图上。在Access 2002中,可以使用图表设计器来创建数据库关系图,该关系图存储在SQL Server数据库中。 • [例12.2] 本例说明如何使用图表设计器来创建数据库关系图。在Students项目中通过stduent_id列在Scores表之间建立关系,通过course_id列在Scores表和Courses表之间建立关系。
步骤 • (1)在Access 2002中打开项目Students.adp。 • 在如图12.13所示的项目窗口中,单击对象栏下方的“数据库图表”,然后执行下列操作之一:
(2)单击项目窗口工具栏上的“新建”按钮。 • 在项目窗口中双击“使用设计器创建数据库图表”。 • (3)当出现如图12.14所示的“添加表”对话框时,按住Ctrl键依次单击要添加到数据库图表中的表,然后单击“添加”按钮,再单击“关闭”按钮。在本例中向图表中添加了三个表,即Students表、Courses表和Scores表。
(4)表设计器窗口中,用鼠标将Students表的主键列student_id拖向Scores表的student_id列上,然后释放鼠标按键。(4)表设计器窗口中,用鼠标将Students表的主键列student_id拖向Scores表的student_id列上,然后释放鼠标按键。 • (5)当出现如图12.15所示的“创建关系”对话框时,如果所建关系的各个选项的默认设置符合要求,直接单击“确定”按钮即可;也可以根据需要更改这些设置,然后单击“确定”按钮。
当在表之间建立关系以后,相应的表之间会出现一条关系线,如图12.16所示。图中线的终结点表示关系是一对一还是一对多:如果关系在一个终结点有一个键,在另一个终结点有一个∞字形,则是一对多关系;如果关系在每个终结点都有一个键,则是一对一关系。当在表之间建立关系以后,相应的表之间会出现一条关系线,如图12.16所示。图中线的终结点表示关系是一对一还是一对多:如果关系在一个终结点有一个键,在另一个终结点有一个∞字形,则是一对多关系;如果关系在每个终结点都有一个键,则是一对一关系。
(6)重复步骤(4)和(5),通过course_id列在Scores表和courses表之间建立关系。(6)重复步骤(4)和(5),通过course_id列在Scores表和courses表之间建立关系。 • (7)单击工具栏上的“保存”按钮,并在“另存为”对话框中指定图表名称,然后关闭数据库图表设计器窗口。 • 创建数据库图表后,若要修改该图表的设置,请单击该图表,然后单击项目窗口工具栏上的“设计”按钮;若要删除该图表,请单击该图表,然后单击项目窗口工具栏上的“删除”按钮。
12.1.6 使用查询 • 项目中的查询对应于SQL Server数据库中的视图,这种数据库对象存储在SQL Server数据库中,可以使用与表相同的方式在SQL查询语句中引用。在Access 2002中,可以使用查询设计器来创建视图。 • [例12.3] 本例说明如何使用查询设计器创建视图对象。在项目文件Students.adp中创建一个名为“学生成绩”的视图,其结果集内的数据分别来自Students表、Courses表和Scores表,所显示的输出列包括Students表中的student_num列、student_name列、Courses表中的course_name列以及Scores表中的score,要求按student_name列升序排列记录。
步骤 • 在Access 2002中打开项目文件Students.adp。 • 在如图12.17所示的项目窗口中单击对象栏下方的“查询”,然后单击项目窗口工具栏上的“新建”按钮,或者在项目窗口中双击“使用设计器创建视图”,以打开查询设计器窗口。
向视图中添加所需表。当出现“添加表”对话框时,将Students表、Courses表和Scores表添加视图中,然后关闭“添加表”对话框,并进入查询设计器窗口.向视图中添加所需表。当出现“添加表”对话框时,将Students表、Courses表和Scores表添加视图中,然后关闭“添加表”对话框,并进入查询设计器窗口. • 向视图中添加所需表列。在查询设计器窗口上部的“图表”窗格中,单击要输出的表列左侧的输出复选框,使这些列出现在下方的设计网格中。 • 在本例中,通过视图输出的列包括Students表中的student_num列和student_name列、Courses表中的course_name列以及Scores表中的score列。 • 指定输出列的别名。在设计网格中,分别在student_num,student_name,course_name和score列的“别名”框中键入中文名称,即“学号”、“姓名”、“课程名称”和“成绩”。
设置排序选项。在设计网格中,单击student_name列的“排序”单元格,然后选择“升序”选项,如图12.19所示。设置排序选项。在设计网格中,单击student_name列的“排序”单元格,然后选择“升序”选项,如图12.19所示。
单击工具栏上的“保存”按钮,并在“另存为”对话框中将视图名称指定为“学生成绩”,然后单击“确定”按钮。单击工具栏上的“保存”按钮,并在“另存为”对话框中将视图名称指定为“学生成绩”,然后单击“确定”按钮。 • 从“视图”选单中选择“数据表视图”命令,或者单击工具栏上的“视图”按钮,或者单击工具栏的“运行”按钮,以浏览视图的运行结果,如图12.20所示。
若要查看视图中的SQL语句,单击工具栏的“SQL”按钮即可。此时将在SQL窗格中看到以下SELECT查询语句:若要查看视图中的SQL语句,单击工具栏的“SQL”按钮即可。此时将在SQL窗格中看到以下SELECT查询语句: • SELECT TOP 100 PERCENT dbo.Students.student_num AS 学号,dbo.Students.student_num AS 姓名,dbo.Courses.course_name AS课程名称,dbo.Score.score AS成绩 FROM dbo.Courses INNER JOIN dbo.Score ON dbo.Courses.course_id INNER JOIN dbo.Students ON dbo.Scores. student_id= dbo.Students.student_id ORDER BY dbo.Students.student_name
由于事先已经使用图表设计器分别在Students表和Scores表以及Courses表和Scores表之间建立了关系,故在上述语句的FROM子句中自动出现了INNER JOIN运算符,通过内连接返回到在连接列中具有相等值的行。此外,在上述语句中还自动出现了TOP 100 PERCENT选项,如果不想使用该选项,可以单击工具栏上的“属性”按钮,然后在“属性”对话框的“视图”选项卡中清除“顶端”复选框。 • 在Access项目中创建一个视图之后,若要在数据表视图中查看结果集的内容,请单击该视图,然后单击项目窗口工具栏上的“打开”按钮;若要在设计视图中修改该视图的定义,请单击该视图,然后单击项目窗口工具栏上的“设计”按钮;若从项目中要删除该视图,请单击该视图,然后单击项目窗口工具栏上的“删除”按钮。
12.1.7 使用窗体 • 通过Access项目中的窗体可以输入和显示数据,这种窗体存储在Access项目中,数据本身则存储在SQL Server数据库中。在Access 2002中,既可以在设计视图中创建窗体,也可以使用向导创建窗体。 • [例12.4] 本例说明如何使用向导创建窗体。在项目文件Student.adp中创建一个名为“学生资料”的窗体,通过该窗体可以查看或修改Student表中的数据。
步骤 • 在Access 2002中打开项目文件Student.adp。 • 启动窗体向导。在如图12.21所示的项目窗口中单击对象栏下方的“窗体”,然后双击“使用向导创建窗体”。
确定在窗体上使用哪些字段。当出现如图12.22所示的对话框时,首先从“表/查询”列表框中选择将要作用窗体数据源的表或视图,然后在“可用字段”列表框中依次双击所需要的每个字段,将它们添加到“选定的字段”列表框中。也可以从多个表或视图中选择字段。若要删除某个已经选定的字段,请在“选定的字段”列表框中双击该字段。确定在窗体上使用哪些字段。当出现如图12.22所示的对话框时,首先从“表/查询”列表框中选择将要作用窗体数据源的表或视图,然后在“可用字段”列表框中依次双击所需要的每个字段,将它们添加到“选定的字段”列表框中。也可以从多个表或视图中选择字段。若要删除某个已经选定的字段,请在“选定的字段”列表框中双击该字段。
在本例中,为窗体选择的字段均来自Student表,包括student_num,student_name,student_sex,birthdate,department,speciality,grade以及class字段。确定窗体上所需字段后,单击“下一步”按钮。在本例中,为窗体选择的字段均来自Student表,包括student_num,student_name,student_sex,birthdate,department,speciality,grade以及class字段。确定窗体上所需字段后,单击“下一步”按钮。 • 确定窗体布局。当出现如图12.23所示的“窗体向导”对话框时,为窗体选择一种适当的布局方式。
每当选择一种布局方式时,可以在该对话框的左半部分查看相应的布局效果。例如,若要使每个表列都显示在一个独立的行上,并且左边带有一个标签,请选择“纵栏式”选项;若要使每一行的所有表列都显示在一行,标签显示在窗体的顶端,请选择“表格”选项。每当选择一种布局方式时,可以在该对话框的左半部分查看相应的布局效果。例如,若要使每个表列都显示在一个独立的行上,并且左边带有一个标签,请选择“纵栏式”选项;若要使每一行的所有表列都显示在一行,标签显示在窗体的顶端,请选择“表格”选项。 • 在本例中选择了“纵栏式”布局,单击“下一步”按钮。
确定窗体样式。当出现如图12.24所示的“窗体向导”对话框时,选择窗体所用的样式,可供选择的样式有“Sumi画”、“国际”、“宣纸”、“工业”、“标准”、“沙岩”、“混合”、“石头”、“蓝图”和“远征”。确定窗体样式。当出现如图12.24所示的“窗体向导”对话框时,选择窗体所用的样式,可供选择的样式有“Sumi画”、“国际”、“宣纸”、“工业”、“标准”、“沙岩”、“混合”、“石头”、“蓝图”和“远征”。 • 在本例中选择了“标准”样式,然后单击“下一步”按钮。
在如图12.25所示的“窗体向导”对话框中,将窗体的标题指定为“学生资料”,并选取“修改窗体设计”选项,然后单击“完成”按钮。在如图12.25所示的“窗体向导”对话框中,将窗体的标题指定为“学生资料”,并选取“修改窗体设计”选项,然后单击“完成”按钮。
在窗体设计器窗口中打开窗体之后,在窗体页眉区中添加一个标签,其文本内容为“学生资料”,并设置字体和字号;将每个文本框左侧的标签内容改为中文,例如将student_num改为“学号”,将student_name改为“姓名”,等等。经过修改后的窗体布局如图12.26所示。在窗体设计器窗口中打开窗体之后,在窗体页眉区中添加一个标签,其文本内容为“学生资料”,并设置字体和字号;将每个文本框左侧的标签内容改为中文,例如将student_num改为“学号”,将student_name改为“姓名”,等等。经过修改后的窗体布局如图12.26所示。
从“视图”选单中选择“窗体视图”命令,或者单击工具栏上的“视图”按钮,以查看窗体的运行效果,如图12.27所示。从“视图”选单中选择“窗体视图”命令,或者单击工具栏上的“视图”按钮,以查看窗体的运行效果,如图12.27所示。
在“窗体”视图中查看学生资料的情形如图12.27所示,此时可以通过单击窗体底部的浏览按钮在不同学生记录之间移动。在“窗体”视图中查看学生资料的情形如图12.27所示,此时可以通过单击窗体底部的浏览按钮在不同学生记录之间移动。 • 在项目中创建一个窗体之后,若要在窗体视图中查看该窗体,请单击该窗体,然后单击项目窗口工具栏上的“打开”按钮;若要修改该窗体的布局,请单击该窗体,然后单击项目窗口工具栏上的“设计”按钮;若要删除该窗体,请单击该窗体,然后单击项目窗口工具栏上的“删除”按钮。
12.1.8 使用报表 • 使用Access项目中的报表可以对数据进行计算、分组、汇总和打印,报表存储在Access项目中,数据本身则存储在SQL Server数据库中。在Access 2002中,既可以使用报表设计器创建报表,也可以使用向导创建报表。 • [例12.5] 本例说明如何使用向导创建报表。在项目Student.adp中创建一个名为“学生资料”的报表,按照学号升序显示所有学生的部分信息,并要求按照班级分组显示。
步骤 • 在Access 2002中打开项目文件Student.adp。 • 启动报表向导。在如图12.28所示的项目窗口中单击对象栏下方的“报表”,然后双击使用向导创建报表。
确定分组级别。当出现如图12.30所示的“报表向导”对话框时,在左边的列表框中双击要作为分组依据的字段。在本例中选择class字段作为分组依据,然后单击“下一步”按钮