用C#代码如何实现,显示在他的vs跳转窗体代码的rpt的数据源某行数据的增加?

关于编写报表,职场中的人相信都会有所感慨,一份整洁、优美的报表会为你在上司面前增色不少,甚至加薪 :) &&大家都喜欢加薪,对吧?在本文中,将向大家介绍怎样利用MS Reporting Services 2005来创建一份报表,并用一个C#小程序来生成它。  本文假定读者已对Visual Studio 2005 IDE有了初步的了解,并能用C#编写代码,懂不懂MS Reporting Services都对理解本文没有关系,当然了,之前写过类似的报表,将有助于你更快地上手。好了,卷起袖子,准备开始吧!  请看图1,这份报表有多复杂?猜猜它需要多少时间完成?就复杂而言,它只是一份简单的、从NorthWind-&Products (SQL Server 2000)中提取出来的报表;就时间而言,相信不会花你一整个小时吧。
  下面,我们开始创建报表,首先要编写一个生成报表的C#小程序。  第一步:创建一个Windows应用程序
  选择文件菜单,新建-工程,从工程类型中选择C#,从右方对话框中选择Windows应用程序;在名称栏中,最好用一个表明程序用途的名字;在位置栏中,写明你想要保存的目录。完成之后,工程中会有一个Form1,我们就从对它的窗体设计器开始讲解。  像下面这样修改Form1的属性,当然也可以依个人喜好修改其他的属性:  Form1.Text = "MS Reporting Services 101 with Smart Client"  Form1.Size = 750, 300  第二步:为窗体(Form)添加报表查看器(Report Viewer)
  什么是报表查看器,就像看DVD碟时需要一部DVD播放机一样,我们需要一个报表查看器来预览报表。对初写报表的人来说,报表查看器可以说是赋予了报表生命,它不仅可预览输出,还可帮助将报表信息生成各种格式(PDF或Excel等等),打印出来更不在话下。  [span] 请按如下步骤在Form1上放置好报表查看器控件:  依次找到工具箱(ToolBox)-数据(Data)-报表查看器(ReportViewer),并把它拖到Form1上。这会创建一个名为reportViewer1新的实例。通过设置reportViewer1.Dock = Fill,报表查看器将会填充窗体的整个区域,以显示报表。在完成第一步与第二步之后,工程看起来应该如图2所示:
  第三步:为工程添加数据集(DataSet)
  数据集是伴随报表查看器而来的,它保存并提供从数据源而来的原始数据,我们便可对这些原始数据进行处理或在C#程序中输出。  请依照如下步骤添加数据集:  从解决方案资源浏览器中选择添加-新项目-数据集,将其名称DataSet1修改dsProduct,并单击添加按钮完成。  添加一个数据表到新创建的数据集中。数据表实质上是用来加载报表数据的,在设计报表时,将会用到DataSet/DataTable中的相关信息。  以下为添加数据表到数据集(dsProduct)中:  从解决方案资源浏览器中双击dsProduct,将会打开设计视图,右键单击并选择添加-数据表。接着,单击表头修改名称为dtProductList,如图3:
  接下来开始为数据表(dtProductList)添加列,此时的设计视图应该如图4所示。右键单击dtProductList并选择添加&&列(Column)。
  重复以上步骤添加以下列:  ProductName (String)   QuantityPerUnit (String)   UnitPrice (Double)   UnitsInStock (Double)   UnitValue (Double):一个基于UnitsInStock * UnitPrice的计算域  在添加列时,默认为String数据类型,添加完之后请转到属性窗口,修改相应的列为Double类型。请看图5,现在的数据表看上去应该就像这样子了。同时,你也可查看属性窗口来修改数据类型。
  第四步:为工程添加报表
  到目前为止,我们已经创建了工程,添加了报表查看器与数据集;现在,是时候创建一份整洁、优美的报表了。  需按照以下步骤生成报表(rptProductList.rdlc):  从解决方案资源浏览器中选择添加-新项目-报表,把名称Report1.rdlc修改为rptProductList.rdlc,并单击添加按钮完成。  工程可能会像图6这样;而添加完报表之后,就可以开始使用数据集(DataSet)进行设计了。
  无论你是第一次设计报表的新手,或是历经沙场老手,都必须与以下三种最基本的报表区域打交道:页眉(或叫表头)、页脚、表体。一般来说,报表在设计时,就应该有一个腹稿,如多大的纸张、应该怎样排版等等,通常都为信纸大小、纵向排版。当然了,如果能在动手之前,先在纸上画个草图,这样更好。可以回过头来看一下图1,在页眉,已经有了报表名及报表日期,表体中有产品的相关信息列表,而页脚中有页码。  那我们就从页眉开始吧。当添加新报表到工程时,默认情况下,在报表设计器中只能看到表体。右键单击报表设计器的表体之外处,选择页眉,这会在报表中添加一个页眉,可以随意调整页眉与表体区的高度,请看图7,图7中减少了表体的高度,增加了页眉的高度。
  在报表设计器的工具箱中,你可以看到用于设计报表的各种各样的控件。在我们这个例子中,会用到TextBox、Line和Table控件。现在我们开始设计页眉了。拖动两个TextBox并把它们置于页眉区,TextBox既能显示静态也能显示动态的数据,而Line控件用于把页眉从表体区中分隔出来。控件放置好之后,可以修改它们的属性以显示我们所需的值,例如可以指定一个TextBox为报表标题,而另一个TextBox显示当前日期。选择TextBox之后,可直接在其内输入静态文本。  请照以下修改标题TextBox:  Value = "Product List"  Color = Purple  而日期TextBox则修改为:  Value = "Run Data: " & Today  Color = Purple  [span] 要注意了,日期TextBox的Value属性以"="符号打头,这代表它不是一个简单的静态文本,而是一个表达式,这个表达式是字符串"Run Date"与VB.NET脚本Today的结果。另外多说一点,你可对报表中所有对象指定任何你想要的名称,一般对大多数控件而言,保持默认名称就好了,此处把标题TextBox的名称(即Name属性)指定为&txtTitle&。  参照图8,完成页眉设计之后,应该看起来就像这样子:
  现在是表体了。表体是承载信息的详细区域,是整个报表最重要的部分,而且你也看到了,当添加报表到工程时,表体已经自动添加了,我们只需要在上面放些控件就行了。  从传统意义上来说,表体区是用于显示详细数据的(在本例中,为产品信息),并且通常为多行信息,而随着报表上数据的增多,表体区也相应会扩展,但一般来说,报表只会设计为一页(信纸或A4纸大小)。在表体区中,有三种最常用的控件:Table、Matrix、List,在本例中会使用Table控件。在报表设计界面中,拖动并把Table控件放置于表体区中,你会看到,这会生成一张三行三列的表,而中间一列则已被标记为:Header、Detail、Footer。  当你知道Table控件只不过是一堆TextBox的组合,是不是有点吃惊呢。对了,Talbe中的每个单元(Cell)都与TextBox一样,也就是说,可以在其中输入静态文本,或指定一个动态表达式。在开始设计表体区之前,记得要多添加两列(我们的报表中有5列喔),添加列非常简单,依照以下步骤就行了:  1、 在表体区中选择Table控件。  2、 左键单击最右边一列的表头(此处假设你是从右边添加新列的)。  3、 右键单击表头,并选择&Insert Column to the Right&(在右边插入列)。  现在报表看起来应该像图9了,可以依据列中的数据随意调整列的宽度。
  大家多半也用过Excel或类似的东西吧,可以把Table控件看成是一张迷你工作表,在其中可以选择边框类型、改变任一单元格的字体等等。因此,所需做的就是依之前设想好的格式来设计表格。我们从第一列开始,随后的每一列也一样,单击最上方的单元格并依次输入:  表头1:&Product Name&  表头2:&Packaging&  表头3:&Unit Price&  表头4:&Units in Stock&  表头5:&Stock Value&  而在接下来的详细数据区(即前面的Detail)中,需要输入表达式,其为dsProduct.dtProductInfo中的列,在此既可以手工输入表达式,也可以从数据源(Data Sources)工具箱(见图7左边)中拖放实现。如果想要手工输入,请从数据区的第一列至最后一列,单击单元格并输入:  Detail 1: "=Fields!ProductName.Value"  Detail 2: "=Fields!QuantityPerUnit.Value"  Detail 3: "=Fields!UnitsInStock.Value"  Detail 4: "=Fields!UnitPrice.Value"  Detail 5: "=Fields!UnitsInStock.Value * Fields!UnitPrice.Value"  请留意Detail 5,它是一个对Units in Stock与Unit Value相乘计算之后的输出。另外提醒一点,如果是拖动列到Table控件中的数据区来实现的,此时如果表头为空,它会自动添加表头。最后,在Table控件的页脚添加一累计栏,选择表体区第4与第5列的页脚单元格,输入:  单元格4:&Total Value:&  单元格5:"=SUM(Fields!UnitsInStock.Value * Fields!UnitPrice.Value)"  单击单元格5,这是使用了一个内置的SUM()函数来得到累计的结果。  最后只剩下页脚区了,在开始编写一些C#代码之前,还需完成报表的页脚,正如前面添加报表页眉一样,在打开的报表设计器中,右键单击并选择页脚(Page Footer),见图7。拖动一个Line和TextBox控件置于页脚区,并在TextBox中输入以下表达式:  Value: ="Page: " & Globals!PageNumber & "/" & Globals!TotalPages  大家可以看到,此处使用了PageNumber和TotalPages,两 者皆为全局变量。  现在,报表应该像图10这样了,此处,还改变了一点颜色,把数值类数据右对齐,把Table当作一张Excel工作表好了,可以随意调整为你想要的外观。
  快大功告成了!剩下的就是表达式生成器了。表达式生成器是Reporting Services中一个非常强大的工具,正如图11中所见,Stock Value是通过SUM函数计算得到的,DateSet中的所有数据都可以由&Fields!&关键字访问。
  第五步:编写赋予报表生机的C#代码
  从解决方案资源浏览器中,选择Form1,右键单击并选择查看代码,为Form1_Load添加以下代码:using System.Data.SqlCusing Microsoft.Reporting.WinFprivate void Form1_Load(object sender, EventArgs e){  //声明连接字符串  string cnString = @"(local); Initial Catalog="+"User Id=Password=northwind";  //如果使用标准安全属性,请改为以下代码  //string cnString = @"Data Source=(local);Initial Catalog= Integrated Security=SSPI";  //声明连接、命令对象及其他相关对象  SqlConnection conReport = new SqlConnection(cnString);  SqlCommand cmdReport = new SqlCommand();  SqlDataReader drR  DataSet dsReport = new dsProduct();  try  {    //打开连接    conReport.Open();    //准备连接对象以把获取的数据放入数据集    mandType = CommandType.T    cmdReport.Connection = conR    mandText = "Select TOP 5 * FROM Products Order By ProductName";    //从命令对象中读取数据    drReport = cmdReport.ExecuteReader();    //有了ADO.NET,可把读取来的数据直接加载到数据集中    dsReport.Tables[0].Load(drReport);    //关闭读取及连接    drReport.Close();    conReport.Close();    //为查看器提供本地报表数据    rpvAbraKaDabra.LocalReport.ReportEmbeddedResource =    "rsWin101.rptProductList.rdlc";    //准备报表数据源    ReportDataSource rds = new ReportDataSource();    rds.Name = "dsProduct_dtProductList";    rds.Value = dsReport.Tables[0];    rpvAbraKaDabra.LocalReport.DataSources.Add(rds);    //加载报表查看器    rpvAbraKaDabra.RefreshReport();  }  catch (Exception ex)  {    //显示错误信息    MessageBox.Show(ex.Message);  }  finally  {    //检查连接是否仍然打开,如果是,关闭它。    if (conReport.State == ConnectionState.Open)    {      conReport.Close();    }  }}  看到这,大家可能会想,为什么在select查询语句中使用了&TOP 5&,此处只是作演示的目的,对输出作一限制,以得到如图1中的累计结果。另外,ReportDataSource的Name属性应总为&DataSet_DataTable&。
本文已收录于以下专栏:
相关文章推荐
ReportViewer不连接数据库,自定义DataSet导出到报表
出处:西西整理 作者:西西 日期: 10:30:26 [大 中 小]
评论: 0 | 我要发表看法
...
C#报表控件ReportViewer的使用
启动VS2005新建一个窗体项目,命名为TestProj
在左边的窗体内选择“添加新数据源”或在菜单上操作“添加新数据源”:
在朋友的邀请下,给他们公司开发一个简单的公司门户网站。本人都多年没有写ASP.NET C#代码了。这几年都在做数据库和商务智能这块。反正朋友说网站不难,就个简单的展现网站,于是就答应了。如是就找了一天...
环境:Visual Studio 2010
前言:本来
本地报表处理期间出错。
尚未指定报表“D:\Components\RDLC\info.rdlc”的报表定义
未能找到文件“D:\Components\RDLC\info.rdlc”。
最近做报表遇...
关于编写报表,职场中的人相信都会有所感慨,一份整洁、优美的报表会为你在上司面前增色不少,甚至加薪 :) ——大家都喜欢加薪,对吧?在本文中,将向大家介绍怎样利用MS Reporting Service...
本来想做一个水晶报表,突然发现VS2010没有自带的水晶报表,还要安装相应的插件。于是学了一下VS2010自带的报表。据说比水晶报表的加载速度快。下面详细介绍一下使用步骤:
1.先创建一个本地的数据...
protected void btnExportExcel_Click(object sender, EventArgs e)
a. ReportViewer关联Report1.rdlc的简单呈现b. 对带有报表参数的Report1.rdlc的呈现c. 利用程式生成的DataSet 填充报表d. 调用存储过程 生成DataSe...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)6630人阅读
编程(22)
VS2010&创建和使用自定义数据源报表详细过程
首先看一下最终效果(显示数据进行了加密,所以成了乱码)
图1.窗体的效果
图2.点击预览时的效果
1.创建显示报表的窗体
新建窗体命名为ReportForm并修改窗体名为学生成绩
在窗体上只需要拖放一个ReportViewer 控件
2.新建数据集为DSofStudent.xsd
在数据集中插入要显示在报表中的表结构(本例为此,注意: 字段名必须和要传向报表的数据表DataTable吻合)
3.插入报表并命名为StudentReport
新建完成后在报表页面右击插入表,在此选中刚创建的数据集中的表,如下图
然后设置表头\表头的背景色\绑定显示字段,如下图
这里说一下如何设置每行显示的颜色
此处选择设置背景为表达式: &=iif(Fields!Grade.Value = 0,&Red&, &GreenYellow&) &意思是如果Grade为0则显示红色,否则为黄绿色。
4. 传入数据
在窗体中的ReportViewer控件中选择报表源,如下
接下来在初始化该窗体时,传入要显示的表的内容
&DataSet ds = new DataSet();
& & & & & & ds = stu.GetStudentList2(sschoolname, sclassname)(传入自己要显示的数据集即可);&
& & & & & & this.reportViewer1.LocalReport.DataSources.Clear();
& & & & & & this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(&StuGrade&, ds.Tables[0]));
& & & & & & this.reportViewer1.RefreshReport();&&
综上,VS2010的报表自定义数据源的创建和使用写完了。
如有不完善的地方,请各位提提建议,本人进行完善。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:183823次
积分:2410
积分:2410
排名:第16341名
原创:72篇
评论:31条
(1)(1)(2)(2)(7)(2)(3)(4)(2)(1)(1)(9)(3)(1)(7)(4)(3)(9)(9)(4)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'当前位置: >>
数据库应用操作
第一章 1.1数据库基础知识数据库的基本概念1.1.1 数据库(Database,DB)DB 是存储在计算机存储介质中的、结构化的、可共享的数据集合。 DB 中的数据按一定的数据模型组织、描述和存储,冗余最小、数据独立 性和易扩展性较高,可为各种合法用户所共享。 1.1.2 数据库管理系统(Database Management System,DBMS) 实际应用中的 DB 可能是相当庞大的,对 DB 的操作也可能是相当 复杂的,要有效地管理和操作 DB,就需要一个“中介人” ,这个“中介人” 就是 DBMS。在 DB 中不仅要存储数据,还要存储数据的结构描述信息, 这些信息详细地记录了表的名称、列的名称、列的类型、列的宽度和小数 位,以及数据的所属权限等相关信息。DBMS 的作用就是负责管理 DB 复 杂的结构描述信息,而 DB 的使用者――用户,不必了解 DB 内部复杂的 结构就可以访问 DB。DBMS 的基本功能表现在 5 个方面: (1) 数据定义 使用数据定义语言(Data Definition Language, DDL)对数据库中的数据对象进行定义。 (2) 数据操作 使用数据操作语言(Data Definition Language,DML)对数据进行查询、插入、删除和修改等操作。 (3) 数据库的运行管理 统一管理、控制数据库的建立、运用和维护,保证数据的安全性、完整性。1 (4) 数据库维护初始数据的输入、转换,数据库的转储、恢复及重新组织、性能监视和分析等。 (5) 数据通讯 网络环境中的数据通讯等。1.1.3 数据库系统(Database System,DBS)DBS 就是使用数据库技术的计算机系统。一般由 DB、硬件、软件和 用户四部分构成。DB(结构化的相关数据的结合) 硬件(CPU、内外存储器、I/O 设备) 软件(DBMS、OS、计算机语言、应用开发支撑软件) 用户(数据库管理员(DBA) 、最终用户、应用程序设计员)数据库系统1.1.5 关系数据库在关系数据库中,数据的基本结构是表(Table) ,表中的数据按行、 列组织排列。每个表都有一个唯一的表名。一个数据库由一个或多个数据 表组成,各个数据表之间可以存在某种关系。学生基本情况表学号 03 姓名 张晓辉 何梅 陈东升 性别 男 女 男 出生日期
班级 金融 国贸 化材 家庭住址 复兴门 312 号 中海雅园 3 号 樱桃园 24 号 联系电话 35? 关系:一个关系在逻辑上对应一个按行、列排列的表(Table) 。 ? 属性:表中的一列称为一个属性,或叫字段(Field) ,表示所描述的对 象的一个具体特征。例如学生基本情况表中的“姓名”是学生这个实2 体的一种属性。 ? 域:属性的取值范围。例如,性别属性的取值范围是“男”或“女” 。 ? 元组:表中的一行称为元组,或叫记录(Record) 。例如,每个记录表 示一个学生的信息。 ? 主键:能够唯一地区分不同记录的一个或多个字段。学生基本情况学号 03 姓名 张晓辉 何梅 陈东升 性别 男 女 男 出生日期
班级 金融 国贸 化材 家庭住址 复兴门 312 号 中海雅园 3 号 樱桃园 24 号 联系电话 35在这个关系中, “学号”为主键。学生成绩学号 03 姓名 张晓辉 何梅 陈东升 性别 男 女 男 科目 VB 数据库 C 语言程序设计 操作系统 成绩 89 76 82 班级 金融 国贸 化材在这个关系中,关键字由(学号、科目)构成,但象这样由多个字段 组成的关键字,也只能有一个字段为“主键” 。 设置主键的目的是确保数据的完整性。 主键必须: ①不能为空 (Null) ; ②必须是唯一的。 ? 外键:在关系数据库中,表与表之间总是存在着某种联系,这种联系 通过一个关键字来实现,该关键字称为“外键” 。 ① 外键将两个表联系起来。3 ② 外键参照一个表的主键而言,即某一字段既可以是甲表的主键,也可 以是乙表的外键。例如,在前面的两个表中, “学号”字段既是“学生 基本情况”的主键,又是“学生成绩”的主键,对于这两个表来说, “学 号”互为外键。 ③ 外键以主键的值检查它所在字段的值的合法性。 ④ 外键既可以参照一个表中的主键,也可以参照另一表中的主键。 ⑤ 外键确保所在列中的值是一个有效的主键值,保证了参照完整性。1.1.6 关系数据表必须具备的条件? 在一个数据表中,一个字段(列)的数据类型必须相同。 ? 任何一个字段(列)都必须是不能再分割的最小基本单位。 ? 在一个数据表中,不能有相同名称的字段(列)和内容完全相同的记 录(行) 。 ? 行和列按任意次序排列都不影响数据的完整性。1.1.7 关系型数据库的三种基本操作① 选择运算(Selection) 在一个表中选择出若干满足条件的记录组成一个新的数据表。 格式:Select&数据表名&Where&条件表达式& 例如:select R where 性别=‘男’and 职称=‘教授’ Select S where 职称=‘副教授’or 工资&=14504 ② 投影运算(Projection) 在一个数据表中选择若干字段组成一个新的数据表。 格式:Project&数据表名&on&字段名& 例如:Project R on 姓名 职称 工资 ③ 连接运算(Join) 在两个表中选取字段间满足一定条件的记录组成一个新的数据表。 格式:Join&数据表名 1&and&数据表名 2&Where&连接条件表达式& 例如:join R1 and R2 where 年龄&=45 and 职称=’教授’1.1.8 关系数据库的基本特点1.整体描述 数据库中的文件相互联系,在整体上服从一定的结构形式。 2.数据独立性 ? 物理独立性 外存设备、存储结构、存取方法等物理结构的改变,不影响逻辑结构。逻辑结构不受物理结构更改的影响,就不需要改变应 用程序。 ? 逻辑独立性 数据库定义的修改、数据类型的变更、逻辑联系的改变等逻辑结构的改变,不影响原有程序对数据库的存取。 3.数据共享性高、冗余度可控 ? 当前所有用户可以存取数据库中的数据;5 ? 数据易于扩充以满足新用户的要求; ? 用户可以用灵活的方式应用数据,并能够以多种程序设计语言存取处 理数据库中的数据。 ? 数据共享是数据库系统的基本目的。程序中绝对不允许存在数据冗余 是不可能的, 但是它必须是可以由设计者控制的, 称为 “可控冗余度” 。 4.数据的安全性(Security) 主要是指防止对数据库的不合法使用, 避免数据的泄密、 更改或破坏。 5.数据的完整性 包括数据的正确性、有效性和相容性。1.1.9 Visual Basic 访问数据库类型和途径1. VB 访问数据库的类型 ? JET 数据库 数据库有 Jet 引擎生成和操作,灵活性强,访问速度快,例如 Microsoft Access。 ? ISAM 数据库 等。 ? ODBC 数据库 开放数据库互连(ODBC) ,例如 Microsoft SQL 索引顺序访问方法 (ISAM) 数据库, 例如 Dbase、 FoxproServer、Oracle 等。 2. VB 访问数据库的主要途径:6 ? 使用数据库控件 Data control 访问数据库。 ? 使用 VB 提供的数据库对象变量编程访问数据库。 ? 通过 ODBC 接口访问 ODBC API 函数。1.21.2.1 Access 2000 的对象Access 2000 数据库Access 2000 包括表、查询、报表、窗体、宏、模块、数据访问页等 7 类对象。这些对象都存放在同一个.mdb 文件中。 1. 表(Table) 表是数据库的核心与基础,数据库中的全部信息都存放在 表中。Access 的报表、查询、窗体等对象都需要从表中获取数据信息。 表以行(Record) 、列(Field)格式组织数据。 2. 查询(Query) 查询操作有三方面的功能:一是以不同的方法查看、 更改、分析、操纵数据库中的数据;二是为其他查询、窗体和报表提 供数据;三是为一个数据访问提供数据源。 3. 报表(Report) 用于输出数据库中的数据。报表中的数据来源于表或 查询。在报表中可以控制每个数据的显示方式,或者对数据进行排序 和分组。 4. 窗体(Form) 窗体是用户交互访问数据库的界面,通过窗体可以向表 中输入数据,查看或更新表中的数据,或者根据用户输入的信息执行 相应的操作。7 5. 宏 一个或多个操作的集合,每个操作可以实现特定的功能。例如,通 过宏可以打开表、更改记录、插入记录、删除记录、建立查询、生成 报表和打印数据等。 6. 模块 模块是将 Visual Basic Fox Applications 声明和过程作为一个单元 进行保存的集合,其专门用来存放 VBA 程序代码。模块有类模块和标 准模块两种基本类型。一个模块一般包含多个过程(Procedure)或函 数(Function) 。 7. 数据访问页(Data Access Page) 一种特殊的 Web 页,可以在提供 Internet 或 Intranet 上浏览的数据。这些数据保存在 Microsoft Access 数据库或 Microsoft SQL Server 数据库中。1.2.2 Access 2000 开发环境1. 启动和退出 Access 2000 2. Access 2000 启动对话框“启动”对话框上 3 个选项的作用 空 Access 数据库 创建一个空数据库, 然后利 用向导和工具添加数据库 所需要的各种对象。 Access 数据库向导、 数据页 和项目 利用向导建立数据库, 或建 立数据页和项目。选择该 项,单击“确定”按钮,将 打开“新建”对话框。 打开已有文件 打开现有的数据库 文件。3. Access 主窗口(标题栏、菜单栏、工具栏、状态栏) 4. Access 2000 数据库窗口(窗口菜单、数据库组件选项卡、组件创建方 法和已有对象列表)8 5.退出 Access 2000 系统 方法 1:单击标题栏右端的“关闭”按钮。 方法 2:使用 Alt+F4 组合键。 方法 3:使用“文件/退出”菜单命令。 方法 4:双击标题栏左端的“控制菜单”图标。 方法 5:右击任务栏上的程序按钮,选择快捷菜单中的“关闭”命令。1.3 建立 Access 数据库和表1.3.1 数据库设计的基本步骤和方法用户需求分析阶段。 概念结构设计阶段(对用户需求进行综合、归纳和抽象,形成独立的9 数据库管理系统的概念模型,即设计 E-R 图) 。 ①对数据库进行总体设计 逻辑结构设计 (把概念结构设计阶段所得到的 E-R 图转换为关系数据 模式) 。 物理设计阶段(设计数据库在座结构和物理实现方法) 。 ②确定数据库中需要的表(每个表只包含关于一个实体的信息;每个表中不能包含重复的记录; 表中每个字段的所有值均是相同的数据类型;每个表中不能有相同 的字段,不同字段的数据类型可以相同) 。 ③建立表结构(确定每个表需要的字段、字段类型和主键。要求:每个字段直接与实体相关;尽 量不包含推导或计算的数据;每个字段保存的信息都是不可再分的 数据项;确定主键,确保其唯一性,且值不为 Null) 。 ④确定表之间的关系(表间关系类型主要有:1:1、1:n、m:n) 。 ⑤优化设计(检查和纠正数据库设计中的不足和错误,尽可以提高开发效率,降低开发成本) 。 ⑥输入数据并创建其他数据库对象(向表中输入数据;创建所需要的查询、窗体、报表、宏和模 块等数据库对象) 。1.3.2 ACCESS 数据库的创建与打开1.创建 Access 数据库 (1)使用“数据库向导”创建数据库 方法 1:使用启动对话框上的“Access 数据库向导、数据页和项目”选项 创建数据库 [实例 1-3-1]使用“数据库向导”中的“分类总账”创建一个名为“我的账 目”的数据库,保存在 D 根目录下。 方法 2:非启动 Access 2000 时使用“数据库向导” 单击 “文件/新建” 命令, 或单击工具栏上的 “新建” 按钮, 或按 Ctrl+N 组合键10 (2)创建空数据库 方法 1:利用启动对话框创建空数据库。 [实例 1-3-2]启动 Access 2000 时创建一个 zygl.mdb 的空数据库, 保存在 D 盘根目录下。 方法 2:在非启动状态创建空数据库 [实例 1-3-3]在非启动状态创建空数据库 zygl.db,保存在 D 盘根目录下。2. 打开 Access 数据库 方法 1:通过启动对话框打开已有的数据库。 方法 2:使用“文件/打开”菜单命令打开已有的数据库。 方法 3:使用“打开”按钮打开已有的数据库。 方法 4:从“文件”菜单底部打开已有的数据库。 方法 5:使用“开始/文档”菜单项打开数据库。 1.3.3 创建数据库表 方法 1:使用“设计视图”创建表[实例 1-3-4]使用 “设计视图” D 盘的 zygl.mdb 数据库添加一个名为 为 “职 工工资发放明细表”的数据表。字段名称 类型 字段长度 索引11 职工号 姓名 职称 技能工资 岗位工资 浮动工资 其他工资 扣款 实发工资文本 文本 文本 数字 同上 同上 同上 同上 同上5 8 8 整形 同上 同上 同上 单精度 同上有(无重复)方法 2:使用“表向导”创建数据表[实例 1-3-5]使用“表向导”为 D:\zygl.mdb 创建一个“职工工资发放明细 表” 。方法 3:使用“数据表视图”创建表[实例 1-3-6]使用“数据表视图”为 D:\zygl.db 创建“职工基本情况” 。字段名称 职工号 姓名 职称 住址 办公室电话 家庭电话 手机 类型 文本 文本 文本 文本 文本 文本 文本 字段长度 5 8 8 50 8 8 11 有(无重复) 索引12 1.3.4 修改表1. 删除表 在数据库窗口中选中需要删除的表,按 Del 键(或“编辑/删除”命令,或快捷菜单中的“删除”命令) 。 2. 重命名表 在数据库窗口中选中要重命名的表,选择“编辑/重命名”命令(或按 F2 键,或快捷菜单中的“重命名”命令) ,输入新的表 名称。 3. 修改字段 在数据库窗口中选定要修改字段的表,单击“设计”按钮,用鼠标单击或按 Tab 键,将光标移到需要修改的字段上再键入新的 名称。按 F6 键,光标移至字段属性区,可以对字段属性修改。 4. 插入字段 在数据库窗口中选定需要插入字段的表, “设计” 单击 按钮,再单击指定行的行选择器,选择“插入/行”命令(或者“插入行” 工具按钮,在选定行上方插入一个空行,然后定义新的字段。 5. 复制字段 在表设计视图中,单击要复制的字段的行选择器选取该字段,选择“编辑/复制命令” (或 “复制”工具按钮,或按 Ctrl+C 键) ,然后将光标移到要插入行的位置,选择“编辑/粘贴”命令(或 者单击工具栏上的“粘贴”按钮,或者按 Ctrl+V 键) 。 6. 删除字段 在表设计视图中,单击行选定器选定要删除的字段(按住Shift 键向上或向下拖动鼠标,可以选取连续多行,按住 Ctrl 键,单 击可以选取不连续的多行,单击“编辑/全选”命令,或者按 Ctrl+A 键,或者单击“字段名称”列左边的“全选”按钮,可以选取所有字13 段) ,然后选择“编辑/删除行”命令(或者快捷菜单中的“删除行” 命令,或者按 Del 键,或者单击“删除行”工具按钮) 。 7. 移动字段 单击行选定器,按下鼠键向新的位置拖动行选定器。 在表设计视图中,单击行选定器选定要修改类型的字8. 重设数据类型段,然后进行修改。 9. 重设关键字 使用工具栏上的“主键”按钮,或者“编辑/主键”命令。 单击行选定器选中需要改变属性的字段,按 F610. 修改表的字段属性键,光标移到属性区域,然后进行修改。1.3.5 设置和修改表间关系设置表间关系要注意两点:①只有定义了主键的表,才能与其他表建 立关系;②定义表间关系之前,要将用来定义关系的所有表关闭。 [实例 1-3-7]建立 zygl 数据库中 “职工工资发放明细表”与“职工基本情 况”之间的关系,它们的相关字段都是“职工号” 。 ? 打开 zygl 数据库。 ? 单击工具栏上中“关系”按钮(或“工具/关系”命令或右击数据库窗 口空白处,选择快捷菜单中的“关系”命令) ,打开“显示表”对话框。 ? 选定“职工工资发放明细表” ,单击“添加”按钮或者直接双击该的表, 将它添加到“关系”窗口下。再以同样的方法将“职工基本情况”表14 添加到“关系”窗口内,然后关闭“显示表”对话框。 ? 将“职工工资发放明细表”中的“职工号”字段拖到“职工基本情况” 表的同名字段上,弹出“编辑关系”对话框,选择建立关系的字段, 单击“创建”按钮, ? 选定“表/查询”和“相关表/查询”中的“职工号” ,单击“创建”按 钮。注:若要删除已有的关系,则单击要删除的关系连线,然后按 Del 键或者单击“编辑/删除”命令,或者右击连线,单击快捷菜单中的“删除”命 令。1.3.6 表中的数据输入在数据库窗口中双击要输入数据的表,即可向表中添加数据。1.4 数据库设计示例[实例 1-4-1]创建一个名为“商品信息”的数据库,字段名称如下表所示, 然后创建一个名为“商品”的表并输入部分商品数据。其中商品代码为主 键。字段名称 商品名称 商品代码 商品价格 数据类型 文本 文本 数字 有(无重复) 索引15 ? 启动 Access 2000,选择启动对话框上的“空数据库”选项,单击“确 定”按,弹出“文件新建数据库”对话框。 ? 在“文件名”框中输入数据库名称“商品信息” ,在“保存位置”框中 选择保存位置,单击“确定”按钮,弹出“商品信息:数据库”窗口。 ? 单击“新建”按钮,弹出“新建表”对话框,双击“设计视图” ,弹出 表设计窗口,在“字段名称”框中输入“商品名称” ,按 Tab 键,选择 “文本”类型。 ? 按 Tab 键,使光标移至下一行,输入“商品代码” ,选择“文本”类型。 单击工具栏上的“主键”按钮,将商品代码设置为主键。 ? 按 Tab 键,使光标移到下一行,输入“商品价格” ,选择“数值”类型。 ? 单击“保存”按钮,弹出“另存为”对话框,输入表名称“商品” ,单 击“确定”按钮,关闭表设计窗口返回数据库窗口。 ? 双击表名称“商品” ,打开数据输入窗口,向表中添加数据。 [实例 1-4-2]添加“供应商”表,字段名称如下表。字段名称 商品代码 供应商 商品网址 数据类型 文本 文本 文本 索引 有(无重复)? 在数据库窗口中单击“新建”按钮,弹出“新建表”对话框,双击“设16 计视图” ,弹出表设计窗口,在“字段名称”框中输入“商品名称” , 按 Tab 键,选择“文本”类型。 ? 按 Tab 键,使光标移到下一行,输入“供应商” ,选择“文本”类型。 ? 按 Tab 键,使光标移到下一行,输入“商品网址” ,选择“文本”类型。 ? 单击“保存”按钮,弹出“另存为”对话框,输入表名称“供应商” , 单击“确定”按钮,关闭表设计窗口返回数据库窗口。 ? 双击表名称“供应商” ,打开数据输入窗口,向表中添加数据。 [实例 1-4-3]对“商品”表和“供应商”表建立关联。 ? 关闭所有已打开的表,进行数据库窗口环境。 ? 单击工具栏上的“关系”按钮,打开“显示表”对话框。 ? 选定“商品”表,单击“添加”按钮,将该表添加到“关系”窗口中, 用同样的方法将“供应商”表添加到“关系”窗口中。 ? 关闭“显示表”对话框。 ? 将“商品”表中的“商品代码”字段拖动到“供应商”表的“商品代 码”字段上。 ? 单击“编辑关系”对话框上的“创建”按钮。17 第二章SQL Server 基础SQL Server 是一个高灵活性、 高性能、 多用户性的服务器端的数据源, 在 VB 中用它作为后端数据库。2.1 SQL Server 企业管理器企业管理器(Enterprise Manager)是 SQL Server 2000 提供的一个 数据库操作环境和管理工具。 利用企业管理器, 可以完成管理 SQL Server 服务器,建立与管理数据库,建立与管理表、视图、存储过程等数据库对 象,用户定义数据类型,备份数据库和事务日志,恢复数据库,复制数据 库等操作。2.1.1 企业管理器的启动与组成1.启动企业管理器:选择“开始/程序/Microsoft SQL Server/企业管理器” 命令。 2. 企业管理器的构成:菜单栏、工具栏、树状区、任务板。2.1.2 SQL 查询分析器(Query Analyzer)18 打开查询分析器窗口: 方法 1:使用“开始/程序/ Microsoft SQL Server/查询分析器”命令 方法 2:在企业管理器中选择“工具/SQL 查询分析器”命令。2.22.2.1 SQL 语言概述SQL 语言基础“SQL”是 RDBMS 中的一种标准语言,称为“结构化查询语言” (Structured Query Language)。 SQL 的主要功能 ① 数据定义(DDL):建立数据库和表的结构、视图和索引。 ② 数据操作(DML):数据更新(插入、修改和删除)。 ③ 数据查询(DQL):查询数据。 ④ 数据控制(DCL):包括对基本表和视图的授权,完整性规则的描述, 事务控制语句等。2.2.2 SQL 数据类型编码类型 数据类型 Bigint integer (或 int) Smallint Tinyint Float 解释 占 8 个字节,存储的数据范围从-263 到 263-1 的整型 数据 占 4 个字节,存储的数据范围从-231 到 231-1 的整型 数据 占 2 个字节,存储的数据范围从-215 到 215-1 的整型 数据 占 1 个字节,存储的数据范围从 0 到 255 的整型数 据 占 8 个字节,存储的数据范围从 -1.79E+308 到 1.79E+308 的浮点精度数字 说明数值型19 Real字符串型Numeric (p, s) Decimal (p, s) Bit 占 1 位,存储 0 或 1 二进制数 Char(n) 定长字符串,n 表示字符串的最大长度,其取值范 围为 1~8000,无论用户输入多少个字符,系统都将 占用 n 个字节的空间 Varchar 变长字符串,n 表示字符串的最大长度,其取值范 (n) 围为 1~8000,其占用的字节数就是字符串的长度。 Text 存储的数据超过 8000 个字节字符数据时, 使用该类 型。 Nchar(n) 定长 Unicode 数据,n 表示字符串的最大长度,其 取值范围为 1~4000 Nvarchar 变长 Unicode 数据,n 表示字符串的最大长度,其 (n) 取值范围为 1~4000 Ntext 与 Text 数据类型相似,采用 Unicode 标准字符集 Image占 4 个 字 节 , 存 储 的 数 据 范 围 从 -3.40E+38 到 3.40E+38 的浮点精度数字 这两种数据类型相同, 它们提供小数所需要的空间。 其中 p 表示可供存储的值的总位数,默认 18 位,s 表示小数点后面的位数,默认设置为 0货币型Money Smallmon ey Datetime Smalldatet ime Binary (n)Char 、 Varchar 和 Text 为普通 编码方式的 字符数据类 型,Nchar、 Varchar 和 Ntext 为 Uncode 编码 方式的字符 数据类型; Binary 、 大容量、 可变长的二进制字符数据, 用于存储 Word、 Varbinary Excel 文档以及 bmp、 等图形文件, gif 最大容量 2GB 和 Image 为 二进制编码 字符数据类 型 用于存储-9220 亿~9220 亿之间的数据。 存储容量比 money 小。 存储 1753 年 1 月 1 日~9999 年 12 月 31 日的日期和 时间数据。 存储 1900 年 1 月 1 日~2079 年 6 月 6 日之间的日期 和时间数据。 定长二进制字符数据,n 的取值范围 1~8000 变长二进制字符数据,n 的取值范围 1~8000 大容量、可变长二进制字符数据,用于存储 word、 Excel、.bmp 和.gif 等文件,最大容量 2GB 日期、时间型,占 8 个字节,起止日期和时间:1753 年 1 月 1 日零时~9999 年 12 月 31 日 23 时 59 分 59 秒 占用 4 个字节, 起止日期和时间: 1900 年 1 月 1 日~20799 年6月6日 精确到 4 位小数,数值前必须添加货币符号($或¥),20日期型Varbinary(n) ImageDatetime 日期型 Smalldatetime货币型Money 输入负数时,在货币数据的后面加负号 Smallmoney2.3 SQL Server 数据库2.3.1 SQL Server 2000 数据库的特点 1. 数据对象等。 包括图表、表、函数、视图、存储过程、触发器、出版物2. 事务和日志对一个单元的操作称为“事务”。事务日志记录每一个事务的开始、对数据的修改等信息。3. 数据库文件和文件组一个 SQL Server 数据库文件至少包括一个数据文件和一个事务日志 文件。 数据文件存放数据库的数据和各种对象。数据文件包括: ? 主数据文件:是数据库的起点,一个数据库只有一个主数据文件。 ? 次数据文件:可选数据文件,用于存储不在主数据文件中的全部数据 和对象。一个数据文件可以有多个次数据文件,也可以没有次数据文 件。 日志文件用于存储用于恢复数据库的全部事务日志信息。一个数据 库至少有一个日志文件。 文件组是数据文件的集合。21 4. SQL Server 2000 数据库文件名SQL Server 2000 数据库有两个文件名: ? 逻辑文件名: SQL 命令访问数据库。 供 例如, 有一个学生管理数据库, 其逻辑文件就是“学生管理”。各个数据库的逻辑文件名不能相同。 ? 物理文件名:文件实际存储在磁盘上的文件名称,包含完整的磁盘目 录路径。例如,学生管理数据库存放在 D 盘根目录中,它的物理文件 名就是“D:\学生管理.mdf”,它的日志文件就是“D:\学生管理.ldf”。2.3.2 使用 SQL Server 企业管理器建立数据库[实例2-3-1]使用企业管理器建立数据库: 数据库文件名:学生管理数据库。 数据文件逻辑名:Stu_data,物理文件名Stu.mdf,存放在D:\test 目录下(若无此子目录,则先建立该子目录)。 文件初始大小:5MB。 增长方式为自动增长,每次增加1MB。 日志文件的逻辑名:Stu_lon,物理文件名Stu.ldf,存放在D:\test 目录下。 日志文件的初始值:2MB. 日志文件的增长方式为自动增长,每次增加10%。 操作步骤: ? 执行“程序/Microsoft SQL Server /企业管理器”,打开“SQL Server Enterprise Manager”窗口。22 ? 在“树”框中展开已安装的SQL Server服务器,右击“数据库”项, 选择“新建数据库”命令,打开“数据库属性”对话框。 ? 选择“常规”标签,在“名称”框中输入数据库名称“学生管理数据 库”。 ? 单击“数据文件”标签,将“文件名”框中的原有文件名修改成 “Stu_data”,将“位置”框中的路径改为“D:\test\Stu.mdf”(注意: 如果D盘上原来没有test文件夹则应当事先创建),在“初始大小”框 中输入初始值“5”。 ? 选中“文件增长”域中的“按兆字节”单选项,默认1MB。 ? 单击 “事务日志” 标签, “文件名” 在 框中输入逻辑文件名 “Stu_lon” , “位置”框的路径改为“D:\test\Stu.ldf”,“初始大小”改为“2”。 ? 在“文件增长”域中的“按百分比”选择框中输入增长速度“10”。 ? 单击“确定”按钮。2.3.2 使用企业管理器修改数据库? 在企业管理器窗口的“数据库”窗格中右击要修改的数据库图标,选 择“属性”命令,在数据库“属性”窗口的“常规”页面上可以看到 数据库的名称、状态、所有者、创建日期、大小、可用空间、备份和 维护等信息。 ? 在“数据文件”和“事务日志”两个选项卡页面上可以修改数据库文 件和事务文件的名称、存储位置、初始容量大小等。 ? 在“文件组”页面中可以添加或删除文件组(若文件组中有文件则需23 先将文件移出后才能删除)。 ? 在“选项”页面中可以设置数据库的相关属性,其中: 限制访问 若选中该复选框,其下的两个单选项变成可用状态,若选择“db_owner、dbcreator、sysadmin 的成员”单选项,则只有数据库所有 者、数据库创建者和系统管理员才有权使用该数据库;若选择“单用户” 项,则只可供一个用户使用该数据库;若选中“只读”项,则数据库只能 访问不能修改。 故障还原 该列表框中有“大容量日志的”、“简单”、“完全”三个选项,表示不同程度的故障修复状态。 设置 该域中的各选项含义如下表:ANSI NULL 默认设置 递归触发器 自动更新统计信息 残缺页检测 自动关闭 自动收缩 允许数据表中的字段值为空 允许触发器递归调用(最多 32 层) 允许使用 Select into 等命令向表中大量插入数据 检查不完整的数据页 无用户使用数据库时,自动关闭数据库 当库文件和日志文件存储空间超过其大小 25%时,系统自动缩减 文件 优化查询时,根据需要自动创建统计信息 标识符必须用双绰号括起来自动创建统计信息 使用被引用的标识符兼容性 设置当前数据库与其他数据库的兼容性。2.3.3 使用企业管理器删除数据库24 单击选中想要删除的数据库,按键盘上的 Del 键,或者右击 想要删除的数据库,选择快捷菜单中的“删除”命令。2.3.4 使用 SQL 语句创建、管理数据库 1.使用 SQL 语句创建数据库语法格式: CREATE DATABASE database name [ON {[PRIMARY]([NAME=logical_file_name,] FILENAME='os_file_name' [, SIZE=size] [, MAXSIZE=|max_size|UNLIMITIED|] [, FILEGROWTH=growth_increment]) }[, …n] ] [LOG ON {([NAME=logical_file_name,] FILENAME='os_file_name' [, SIZE=size] [, MAXSIZE=|max_size|UNLIMITED|] [, FILEGROWTH=growth_increment]) }[, …n] ] [实例 2-3-2]使用 SQL 命令创建一个包含一个数据文件和一个事务日志文 件的数据库。库文件名和数据文件逻辑名均为 Book,物理文件名为 Book.mdf,存储在 D 盘根目录中,该数据库主数据文件是 Book,初 始大小 8MB,最大尺寸 80MB,以 10%的速度增长。事务日志文件 逻辑名为 Book_log,物理文件名为 Book _log.ldf,初始大小 1MB, 最大尺寸 20MB,以 20%的速度增长。 CREATE DATABASE Book ON PRIMARY (NAME= Book,25 FILENAME='D:\Book.mdf', SIZE=8MB, MAXSIZE=80MB, FILEGROWTH=10%) LOG ON (NAME= Book_log, FILENAME='D:\Book_log.ldf', SIZE=1MB, MAXSIZE=20MB, FILEGROWTH=20%)2. 使用 SQL 语句修改数据库语法格式: ALTER DATABASE databasename {ADD FILE&filespec&[,…n][TO FILEGROUP filegroup_name] |ADD LOG FILE&filespes&[,…n] |REMOVE FILE logical_file_name[WITH DELETE] |ADD FILEGROUP filegroup_name |REMOVE FILEGROUP filegroup_name |MODIFY FILE&filespce& |MODIFY NAME=new_dbname |MODIFY FILEGROUP filegroup_name{filegroup_property |NAME=new_filegroup_name}} [实例 2-3-3]扩大“学生管理数据库”的数据文件,添加一个次要数据文 件“学生管理数据库_data2,其大小为 10MB,最大容量 20MB,增长速 度 20%。CREATE DATABASE 学生管理数据库26 ON PRIMARY (NAME= 学生管理数据库, FILENAME='D:\学生管理数据库.mdf', SIZE=5MB, MAXSIZE=100MB, FILEGROWTH=15%) LOG ON (NAME= 学生管理数据库_log, FILENAME='D:\学生管理数据库_log.ldf', SIZE=2MB, MAXSIZE=50MB, FILEGROWTH=0)打开 SQL 查询分析器窗口,在“查询”区中键入如下代码: alter database 学生管理数据库 add file (name=学生管理数据库_data2, filename='d:\学生管理数据库 2.Mdf’, size=10mb, maxsize=20mb, filegrowth=20%) 按 F5 键,或者单击工具栏上的“执行查询”按钮,或者选择“查询/ 执行”菜单命令,运行代码。3. 删除数据库的 SQL 语句――DROP DATABASE语法格式:DROP DATABASE name[,…n] 打开 SQL 查询分析器窗口,在“查询”区中键入如下代码: Drop database book1, mydb 按 F5 键,或者单击工具栏上的“执行查询”按钮,或者选择“查询/ 执行”菜单命令,运行代码。2.4 创建和使用表在 SQL Server 2000 中,一个数据库可以包含 200 万个数据表,一个27 表可以定义 1024 个字段。2.4.1 创建表 1. 使用 SQL 语句创建表语法格式:CREATE TABLE table name (Column name column properties [[DEFAULT data_value][NULL|NOT NULL]][, …n] ) [,{PRIMARY KEY | UNIQUE | FOREIGN KEY}(column_name[ , …n] )] ;[实例 2-4-1]使用 SQL 命令,在“学生管理数据库”下面三个数据表。“学生”表结构字段名及说明 学号 姓名 性别 年龄 班级 专业 字符型 字符型 字符型 整形 字符型 字符型 10 10 数据类型 7 8 2 宽度 主键 非空 说明“课程”表结构字段名及说明 课程号 课程名 学时数 数据类型 字符型 字符型 整形 宽度 10 20 说明 主键 非空“选课”表结构字段名及说明 学号 课程号 成绩 数据类型 字符型 字符型 整形 宽度 7 10 说明 主键,引用 Student 的外键 主键,引用 Course 的外键“学生”表use 学生管理数据库 Create table 学生 ( 学号 char(7) not null, 姓名 char(8) not null,28 性别 char(2), 年龄 int, 班级 char(10), 专业 char(10) PRIMARY KEY(学号) )“课程”表use 学生管理数据库 Create table 课程 ( 课程号 char (10) not null, 课程名 char(20) not null, 学时数 int, PRIMARY KEY(课程号) )“选课”表use 学生管理数据库 create table 选课 ( 学号 char(7) not null, 课程号 char(10) not null, 成绩 int, PRIMARY KEY(学号,课程号), )2. 使用企业管理器创建表[实例2-4-2]用企业管理器为学生管理数据库建立[实例2-4-1]的三张表。 创建“学生”表: ? 打开“企业管理器”窗口,展开 “学生管理数据库 选项,选择“新建表”命令,打开创建表结构窗口。 ? 输入列名 “学号” 按Tab键, , 光标移到 “数据类型” 栏中, “char” 选择 , 按Tab键,光标移到“长度”栏中,输入“10”,按Tab键,光标移到 “允许空” 栏, 单击 “√”将其取消,设置为非空, 单击工具栏上的 “设 置主键”按钮或者右击鼠标,选择“设置主键”命令,将“学号”设29”,右击“表” 置为主键。 ? 依照第二步方法,依次创建完所有字段后,单击工具栏上的“保存” 按钮,或者右击鼠标,选择“保存”命令,弹出“选择名称”对话框, 输入表名称“学生”,单击“确定”按钮。 ? 关闭表结构窗口,回到“企业管理器”窗口,在左侧的“树”窗格的 “学生管理数据库”中单击“表”,在右侧的“表”窗格中选中“学 生”表,选择“操作/打开表/返回所有行”命令,或者右击“学生”, 选择“打开表/返回所有行”命令,打开表数据输入窗口,向表中输入 数据,输入完毕后,关闭窗口,自动保存数据。 其他两张表的创建方法与上述步骤相同。2.4.2 修改表结构 1. 在“企业管理器”中修改表结构? 在“企业管理器”窗口中,展开表所在的数据库项,然后单击“表”。 ? 在“表”窗格中右击指定的表名称,选择“设计表”命令,弹出表格 字段设计界面,然后根据需要进行修改,完成保存所作的修改。2. 使用 SQL 语句修改表结构语法格式:ALTER TABLE table name {[ALTER COLUMN column name {new_data_type[{precision[,scale]}]} |ADD {[&column_definition&]}[,…n] |DROP COLUMN column}[,..n]30 }[实例2-4-3]使用SQL语句在“学生”表中增加一个“家庭住址”字段, 数据类型为字符型,宽度48,允许空。 ? 打开“查询分析器”,在数据库列表框中选择“学生管理数据库”。 ? 在查询窗口中输入下列SQL语句: ALTER TABLE 学生 ADD 家庭住址 varchar(48) null ? 单击工具栏上的“执行查询”按钮,或者“查询/执行”菜单命令,或 者按 F5 键运行上述 SQL 语句。3. 删除数据表方法1:在 “企业管理器”中删除表 在 “企业管理器”中,展开表所在的数据库,单击“表”,然后在 “表”窗格中右击要删除的数据,执行“删除”命令,弹出“去除对象” 对话框,单击“全部去除”按钮。 方法2:使用SQL语句删除表 在 “查询分析器” 窗口中按下列格式输入删除表的SQL语句, 并执行: USE database_name DROP TABLE table_name 例如:删除学生管理数据库中的“学生”表。 use 学生管理数据库31 drop table 学生2.4.3 操纵数据 1.插入数据 方法 1:在 “企业管理器”添加数据[实例2-4-4] 在企业管理器中为“学生”表添加以下三条记录。2310109 沈红兵 2320108 何雪娟 2310111 狄晓雷 男 22 计算机 软件工程 女 21 经济 市场营销 女 22 计算机 计算机应用操作步骤: ? 在企业管理器中找到“学生管理数据库”。 ? 单击“表”,在“表”窗格中右击“学生”,选择“打开表/返回所有 行”命令,打开记录输入窗口。 ? 依次输入三条记录,关闭界面,数据被自动保存。 方法2:使用SQL语句添加数据。语法格式: INSERT [INTO] table_name [(column_list)] {VALUES (DEFAULT|NULL|expression [,…n])|DEFAULT VALUES}[实例2-4-5] 在使用SQL语句为“学生”、“课程”和“选课”三个表添 加记录。32 插入一条数据记录操作: (1) SQL命令格式:INSERT INTO [教学管理数据库].[dbo].[学生] ([学号] ,[姓名] ,[性别] ,[年龄] ,[班级] ,[专业]) VALUES (&学号, char(7),& ,&姓名, nchar(10),& ,&性别, char(2),& ,&年龄, int,& ,&班级, nchar(10),& ,&专业, nchar(10),&)(2) 操作示例: use 学生管理数据库 insert into 学生(学号, 姓名, 性别, 年龄, 班级, 专业) values(';, '沈红兵', '男', 22, '计算机', '软件工程')33 学生表 use 学生管理数据库 insert into 学生(学号,姓名,性别,年龄,班级,专业) values(';,'沈红兵','男',22,'计算机','软件工程') insert into 学生(学号,姓名,性别,年龄,班级,专业) values(';,'何雪娟','女',21,'经济','市场营销') insert into 学生(学号,姓名,性别,年龄,班级,专业) values(';,'狄晓雷','女',22,'计算机','计算机应用') insert into 学生(学号,姓名,性别,年龄,班级,专业) values(';,'刘军','男',20,'计算机','计算机应用') insert into 学生(学号,姓名,性别,年龄,班级,专业) values(';,'徐丽','女',20,'计算机','计算机应用') 课程表: use 学生管理数据库 insert into 课程(课程号,课程名,学时数) values('1','数据结构',54) insert into 课程(课程号,课程名,学时数) values('2','操作系统',51) insert into 课程(课程号,课程名,学时数) values('3','软件工程',33) insert into 课程(课程号,课程名,学时数) values('4','接口与通讯',51) 选课表: use 学生管理数据库 insert into 选课(学号,课程号,成绩) values(';,'1',84) insert into 选课(学号,课程号,成绩) values(';,'4',76) insert into 选课(学号,课程号,成绩)34 values(';,'2',91) insert into 选课(学号,课程号,成绩) values(';,'2',81) insert into 选课(学号,课程号,成绩) values(';,'3',69) insert into 选课(学号,课程号,成绩) values(';,'1',73) insert into 选课(学号,课程号,成绩) values(';,'4',80) insert into 选课(学号,课程号,成绩) values(';,'1',74) insert into 选课(学号,课程号,成绩) values(';,'3',77) 2.修改数据 语法格式: UPDATE table_name SET{column_name={expression|DEFAULT|NULL} |@Variable=expression |@Variable=column= expression}[,…n] [FROM{&table_source&}[,…n]] [where&search_condition&] 说明:以@开头的标识符代表一个局部变量或参数(见教材P41) [实例2-4-6] 在将“学生”表中的所有学生的年龄增加1岁。打开查询分析器,选择“学生管理数据库”,输入如下SQL语句,并执行:UPDATE 学生 set 年龄=年龄+13. 删除数据删除表中的数据使用SQL语句是最便捷的方法。 语法格式: DELETE [FROM] table_name35 [FROM {&table_source&}[,…n]] [Where&search_condition&] [实例2-4-7] 删除Student表中姓名为“何敏”的学生。 在“查询分析器”窗口中,输入删除数据的SQL语句,并执行:USE 学生管理数据库 DELETE 学生 WHERE 姓名='刘军'2.5 简单查询2.5.1 SQL 查询的基本结构SELECT [ALL | DISTINCT]&select_list | *& [Into [new_table_name]] FROM {table_name|view_name}[,{table_name|view_name}[,…]] [WHERE clause] [HAVING clause] [GROUP BY clause] [ORDER BY clause] [FOR BROWSE]2.5.2 SELECT 子句 语法格式: SELECT [All|DISTINCT] select_list FROM {table_name|view_name} 1. 选择列[实例 2-5-1]查询“学生”表、 “课程”和“选课”表的全部信息。 use 学生管理数据库36 select * from 学生 select * from 课程 select * from 选课 [实例 2-5-2]在“学生” 表中查找计算机班的学生的学号、姓名、 班级信息。 use 学生管理数据库 select 学号,姓名,班级 from 学生 where 班级='计算机'2. 改变列标题语法格式:新字段名=原字段名 或者: 原字段名 AS 新字段名[实例 2-5-3]将“选课”表中的“成绩”字段名改为“考试成绩” 。 Use 学生管理数据库 select 学号,课程号,考试成绩=成绩 from 选课 或者: use 学生管理数据库 select 学号,课程号,成绩 as 考试成绩 from 选课3. 带表达式的 SELECT 子名SELECT 子句中包含+、-、*、/等运算的表达式。 [实例 2-5-4]将“选课”表中的所有学生的成绩提高 5%,并添加一个“提 高后的成绩”字段,用于存放提高后的成绩。 Use 学生管理数据库37 select 学号,课程号,成绩,成绩*1.05 AS 提高后的成绩 from 选课4. ALL 与 DISTINCT查询时使用 ALL 关键字,则允许查询结果中有重复记录出现,使用 DISTINCT 关键字,则不允许出现重复记录。 [实例 2-5-5]检索“选课”表中的全部学生学号和已经选过课的学生学号。 Use 学生管理数据库 select all 学号 from 选课 select distinct 学号 from 选课2.5.3 用 WHERE 子句过滤记录用 WHERE 子句过滤记录就是按指定的条件检索表中的信息。语法格式: SELECT select_list FROM table_list WHERE search_condition 1. 比较运算符的使用(=、&、&、&=、&=、&&)[实例 2-5-6]检索选修 3 号课程的学生学号和成绩。 Use 学生管理数据库 select 学号,成绩 from 选课 WHERE 课程号=3 [实例 2-5-7]检索未选修 3 号课程的学生学号、课程号和成绩。38 Use 学生管理数据库 select 学号,课程号,成绩 from 选课 WHERE 课程号&&3 [实例 2-5-8]检索成绩在 90 分(含)以上的学生学号、课程号和成绩。 Use 学生管理数据库 select 学号,课程号,成绩 from 选课 WHERE 成绩&=902. 逻辑运算符 在简单查询过程中, 允许使用 AND、 OR、 NOT 三个逻辑运算符。 它们的作用是在 WHERE 子句中合并若干个搜索条件,生成一个较 为复杂的查询。[实例 2-5-9]在选课表中检索课程号为 2,并且成绩 80 分(含)以上的学 号、课程号和成绩。Use 学生管理数据库 select 学号,课程号,成绩 from 选课 WHERE 课程号=2 AND 成绩&=80[实例 2-5-10] 在选课表中检索课程号为 2,或者成绩 80 分(含)以上的 学号、课程号和成绩。Use 学生管理数据库 select 学号,课程号,成绩 from 选课 WHERE 课程号=2 OR 成绩&=903. BETWEEN…AND 语句 该语句的作用是在指定的范围内进行搜索。39 [实例 2-5-11]在“选课”表中检索成绩 85~100 之间的学生的学号、课程 号和成绩。 use 学生管理数据库 select 学号,课程号,成绩 from 选课 where 成绩 between 85 and 100 下面语句的查询结果与上面语句的查询结果有何区别? use 学生管理数据库 select 学号,课程号,成绩 from 选课 where 成绩 not between 85 and 100 4. IN(NOT IN) 在由 IN 指定的字段中或者在由 NOT IN 指定的字段中进行搜索。 [实例 2-5-12]在“学生”表中检索经济班的学生信息。 use 学生管理数据库 select * from 学生 where 班级 in('经济') 等价于: use 学生管理数据库 select * from 学生 where 班级='经济' [实例 2-5-13]在“学生”表中检索非经济班的学生信息。 use 学生管理数据库 select * from 学生 where 班级 not in('经济') 等价于:40 use 学生管理数据库 select * from 学生 where 班级&&'经济'5. 字符串模糊匹配 LIKE 关键字(%、_、[ ]、[^])LIKE 关键字用于检索与特定字符相匹配的记录行。 LIKE '××%' 返回以××开头的任意字符串。 LIKE '%××' 返回以××结束的任意字符串。 LIKE '%××%' 返回包含了××的任意字符串。LIKE '-××' 返回以××结束的任意字符串。 LIKE '[MN]%' 返回以 M 或者 N 开始的任意字符串。 LIKE 'M[^C]%' 返回以 M 开头且第 2 个字符不是 C 的任意字符串。 [实例 2-5-14]在“学生”表中检索姓名为“何”姓的学生信息。 use 学生管理数据库 select * from 学生 where 姓名 LIKE '何%' 在“学生”表中检索专业结束为“应用”的专业。 use 学生管理数据库 select * from 学生 where 专业 LIKE'%应用' 在“学生”表中检索以“场营销”三个字符结尾的专业。 use 学生管理数据库 select * from 学生 where 专业 LIKE'_场营销'41 在“学生”表中检索姓“沈”“刘”“何”的学生信息。 、 、 use 学生管理数据库 select * from 学生 where 姓名 LIKE '[何刘沈]%' 在“学生”表中检索不姓“何”的学生信息。 use 学生管理数据库 select * from 学生 where 姓名 LIKE '[^何]__'2.5.4 ORDER BY 子句 该语句的作用是对查询结果进行升序( ASC,默认)或降序 (DESC)排列。[实例 2-5-16] 检索“选课”表中的课程号为 2 的学号和成绩字段信息,并 按成绩降序排序。 use 学生管理数据库 select 学号,成绩 from 选课 where 课程号=2 order by 成绩 desc2.5.5 聚合函数和 GROUP BY 子句 在计算机语言中,函数具有求和、求均值、统计汇总、求最大值 和最小值等功能。这类函数一般称为“聚合函数”。聚合函数通常与 SELECT 语句的 Group by 子句一同使用。 1. 聚合函数常用聚合函数 函数名 功能42 AVG Count Count(*) Max Min Sum求平均值 统计某个表达式中数据值的数量 统计表中的行数 求最大值 求最小值 求和[实例 2-5-17] 统计“学生”表的学生人数。 use 学生管理数据库 select count(*) as 学生人数 from 学生 [实例 2-5-18] 计算所有选了 2 号课程的学生的最高分、最低分、总分和平 均分。 use 学生管理数据库 select max(成绩) as 最高分, min(成绩) as 最低分, sum(成绩) as 总分, avg(成绩) as 平均分 from 选课 where 课程号='2' [实例 2-5-19] 在“学生”珠中查询最大年龄和最小年龄。 use 学生管理数据库 select max(年龄) as 最大年龄, min(年龄) as 最最小年龄 from 学生2. GROUP BY 子句的使用43 聚合函数用于生成单个汇总数据, GROUP BY 子句用于生成分组汇总 数据。 [实例 2-5-20] 在“学生”表中统计每个班的人数和平均年龄。 use 学生管理数据库 select 班级, count(*) as 人数, avg(年龄) as 平均年龄 group by 班级 order by 班级 from 学生2.5.6 HAVING 子句 HAVING 子句只有在 GROUP BY 子句中使用才有意义。 GROUP BY 子句把数据组织起来分成组,HAVING 子句则为 GROUP BY 子 句设置分组条件(最多可设置 128 个条件)。[实例 2-5-21] 在 “选课” 表中检索同时选修 2 门课以上的学生学号和门数。 use 学生管理数据库 select 学 号 ,count( 课 程 号 ) as 课 程 门 数 from 选 课 group by 学 号 having count(课程号)&=2 order by 学号2.6 高级查询技术高级查询主要包括连接查询、嵌入式 SELECT 语句子查询、联合查 询等。2.6.1 连接查询根据需要,把两个或者多个表中共同拥有的字段连接起来,形成一个44 新的数据表。包括 ANSI 连接和 SQL Server 连接两种形式。1. ANSI 连接使用两个或多个表中共同拥有的字段,同时查询两个或多个表中的数 据,所生成的新表中包含多个表中的字段。 语法格式:SELECT table_name. colimn_name, table_name.column_name, … FORM {table_name [join_type] JOIN [table_name ON search_conditions] WHERE [search_conditions] 其中:join_type 参数表示三种连接方式:? INNER(内连接):查询结果集中仅仅包含满足条件的记录,为 SQL Server 默认的连接方式,关键字 INNER JOIN 可简写成 JOIN。 ? CROSS(交叉连接):查询结果集包含两个表中的所有记录。 ? OUTER(外连接):查询结果集中既包含满足条件的记录,又包含其 中某个表的全部行。外连接又包括三种形式:左外连接、右外连接、 全外连接。 [实例 2-6-1] 连接“学生”表和“选课”表,检索选修了 3 号课程的学生 信息(内连接) 。 use 学生管理数据库 select 学生.* from 学生 join 选课 on 学生.学号=选课.学号 选课.课程号=345where [实例 2-6-2] 连接“学生”表和“选课”表(交叉连接) 。 use 学生管理数据库 Select * from 学生 cross join 选课2. SQL Server 连接多表连接时,可以在 FROM 子句之后直接指定多个表,可以用 WHERE 子句过滤条件。 语法格式:SELECT table_name.column_name, table_name.column_name, … FROM {table_name, table_name, …} WERE table_name.column_name join_operator table_name.column_name[实例 2-6-3] 连接学生和选课表,检索选修课成绩等于高于 60 分,低于 80 分的学生信息,结果显示学号、姓名、班级和成绩。use 学生管理数据库 select distinct 学生.学号,学生.姓名,学生.班级,选课.成绩 from 学生,选课 where 学生.学号=选课.学号 and 选课.成绩&=60 and 选课.成绩&802.6.2 子查询SELECT 语句可以嵌套在 SELECT、INSERT、UPDATE、DELETE 等语句之中,这种嵌套的 SELECT 语句称为“子查询”。在实际应用中, 如果一个查询依赖于另一个查询时, 通过使用子查询。 子查询的主要作用: 产生一个派生表、用查询替代一个表达式、判断某个值是否存在等。子查46 询要放在括号内,嵌套层数最多 32。对于 text、image 类型的字段,子查 询无效。1. 把子查询用作派生的表[实例 2-6-4] 使用子查询检索班级为计算机的男生的学号、姓名、性别、 年龄、专业等信息。use 学生管理数据库 Select A. * from (SELECT 学号,姓名,性别,年龄,专业 from 学生 where 性别='男' and 班级='计算机') as A2. 把子查询用作表达式[实例 2-6-5] 使用子查询检索班级为计算机的男生的学号、姓名、年龄, 计算他们的平均年龄及与平均年龄的年龄差。use 学生管理数据库 select 学号,姓名,年龄, (select avg(年龄) from 学生) as 平均年龄, 年龄-(select avg(年龄) from 学生) as 年龄差 from 学生 where 班级='计算机' and 性别='男'3. 相关子查询上面的 1 和 2 两种形式的子查询的执行过程是:先执行子查询,在子 查询结果的基础上再执行外查询,子查询的查询条件不依赖于外查询,并 且子查询只执行一次。这样的子查询称为不相关子查询或嵌套子查询。与47 此相反, 相关子查询的内层子查询则被反复执行, 即外查询有多少条记录, 内查询就要被执行多少次。因此,相关子查询常被用作动态表达式。 [实例 2-6-6] 检索选修了 2 号课程并且成绩在 90 分以上的学生的学号和姓 名。use 学生管理数据库 select 学号,姓名 from 学生 where 90&=(select 成绩 from 选课 选课.学号 and 课程号=2) where 学生.学号=执行过程: 外查询将“学生”表中的字段值“学号”→内查询→用该学号与“选 课”中的学号进行匹配,如果匹配且“课程号”为 2,则将该学号返回给 外查询→进一步判断成绩是否大于等于 90,如果是,则显示学号、姓名, 否则,结束该轮查询,外查询再重新传值进行第二轮查询。2.6.3 TOP 关键字功能:在 SELECT 语句中限制查询结果只列出 n 个记录(使用 TOP 关键 字时,最好同时使用 ORDER BY 子句,才有实际意义)。 语法格式: SELECT TOP n[percent][with ties] table_list 其中: n 为正整数。48 TOP n 列出查询结果的前 n 个记录。 TOP n percent 列出查询结果的前 n%个记录。 With ties 包括并列结果,必须与 order by 子句联用。 [实例 2-6-7] 检索平均分在前 3 名的学生的学号和成绩, 并由高到低排列。use 学生管理数据库 select TOP 3 学号,avg(成绩) as 平均分 from 选课 group by 学号 order by 平均分 desc2.6.4 合并多个结果集作用:把两个以上的查询结果合并为一个结果集。 语法格式: SELECT 语句 1 UNION SELECT 语句 2 UNION[ALL] …… SELECT 语句 n 要求: ? 查询语句中的字段数和字段顺序必须相同, 并且字段类型也必须兼容。 ? 若 UNION 语句中包含了 ORDER BY 子句,则整个结果集都要排序。49 ? 结果集中的字段名来自第一个 SELECT 子句 [实例 2-6-8] 检索计算机班的男生信息和经济班的女生信息生成一个新的 记录集。use 学生管理数据库 select * from 学生 where 班级='计算机' and 性别='男' Union select * from 学生 where 班级='经济' and 性别='女'第三章 数据库访问技术 3.1 数据库的概念3.1.1 VB 访问数据库信息的主要方法? 数据控件(Data Control) 如 Data 控件、ADO Data 控件。 如 DataGrid 控件、 DataListBox? 数据约束控件(Bound Controls) 控件、DataComboBox 控件。? 数据访问对象(Data Access Object) DAO(数据存取对象) 、RDO (远程数据对象)和 ADO(ActiveX Data Object,动态数据对象) 。 DAO 和 RDO 都是 VB 早期的数据访问接口, 目前已逐步被 ADO 所替 代。ADO 包含了 6 个常用的可编程对象:ADO 常用对象 对象名称 Connection(连接) Command(命令) Recordset(记录集) 作 用用于建立数据源与 ADO 应用程序之间的连接。 通过连接发出的“命令”操作数据源,一般使用 SQL 命令。 是对数据库进行检索后的数据记录集。这个记录集既可以50 是 Command 对象返回的查询结果, 也可以是直接运行 SQL 命令产生的查询结果。 Error(错误) Parameter(参数) Field(字段) 返回一个数据库连接(Connection)上产生的错误信息。 将存储过程和参数查询所需的参数传递给 Command 对象。 读取记录集(Recordset)对象中各个字段的值。其中:Connection、Command、Record set 是主要的对象。3.1.2 数据源数据源是用户数据与服务器中的数据库通信过程的数据提供者,是数 据库数据与用户应用程序交互的一种接口和方法。 使用数据控件来连接数 据库时,第一步工作就是配置数据源,即为数据控件设置好连接的对象。 VB 能够访问三种类型的数据库: ? Jet 数据库 通过 DAO API (数据存取对象应用程序接口) Microsoft 、Access 创建的数据源,通常称为本地数据源,是 VB 默认的数据源。 存取速度快,访问效率高。 ? ISAM 数据库 以索引顺序存取方法创建的数据源,目前常见的有FoxPro、Excel、Lotus 等。查询速度较快。 ? ODBC(Open Database Connectivity)数据库 它是一种应用程序接口(API)。它提供了独立于任何的 DBMS 编写应用程序的能力。使 用 ODBC 开发 DB 应用程序的方法是建立 ODBC 数据源, 通过 ODBC 接口函数提交 SQL 语句并行接收 SQL 命令执行的结果。数据库的底 层操作由各个数据库的驱动程序来完成。51 3.1.3 可视化数据管理器可视化数据管理器(Visual Data Manager)具有建立数据库、数据表 和数据查询的功能。 1. 可视化数据管理器简介 在 VB 集成环境中,单击“外接程序/可视化数据管理器”命令即可启 动“VisData”窗口。该窗口由菜单栏、工具栏、子窗口区和状态栏组成。 菜单栏由 4 个菜单项组成:菜单名称 文件 实用程序 窗口 帮助 打开和新建数据库 建立查询和生成数据窗体 排列窗口 提供各种帮助信息 作 用工具栏中的按钮分为记录集按钮、数据显示按钮和事务方式按钮三 类。 记录集按钮:提供打开数据表的方式。记录集按钮 按钮名称 作 用表类型记录集以该方式打开数据表,对表中数据所作的增、删、改等会直 接更新数据表中的数据。 以该方式打开数据表或由查询返回的数据,所进行的增、删、 改及查询等操作都先在内存中进行,速度快。 以该方式打开数据表或由查询返回的数据只能读,不能改。动态集类型记录集 快照类型记录集52 数据显示按钮:提供数据显示方式。数据显示按钮 按钮名称 作 用使用 Data 控件 不使用 Data 控件在显示数据表的窗口中使用 Data 控件来控制记录的滚动在显示数据表的窗口中不使用 Data 控件, 而使用水平滚动条 来控制记录的滚动。 在显示数据表的窗口中使用 Dbgrid 控件。使用 Dbgrid 控件事务方式按钮:提供数据写入方式。事务方式按钮 按钮名称 作 用开始事务开始将数据写入内存数据表中。回滚当前事务取消由“开始事务”的写操作。提交当前事务确认数据写入操作,并更新数据,原有数据将不能恢复。2. 利用可视数据管理器创建数据库VB 可视化数据管理器能够创建的数据类型Microsoft Access 数据库 Dbase 数据库Microsoft Access (Version2.0 或 7.0) .mdbDbase(Version5.0、IV 或 II)FoxPro 数据库 FoxPro(Version3.0、2.6、2.5 或 2.0) Paradox 数据库 Parsdox(Version5.0、4.X 或 3.X) ODBC 数据库 新的 ODBC 数据源TextFiles 存储表文件的目录53 [实例 3-1-1]利用可视化数据库管理器创建名为 “zygl” Access 数据库, 的 存放在 D 盘根目录中。 ? 启 动 可 视 化 数 据 库 管 理 器 窗 口 , 选 择 “ 文 件 / 新 建 /Microsoft Access/Version 2.0mdb(或 Microsoft Access/Version 7.0mdb)。 ? 在“保存在”列表框中选择 D 盘根目录,在“文件名”框中输入数据 库文件名“zygl.mdb”。 ? 单击“保存”按钮。此时,VisData 窗口变成多文档窗口,左边是“数 据库窗口”子窗口,右边是“SQL 语言”子窗口。在“数据库窗口” 中单击“+”号,将列出新建数据库的常用属性。 ? 单击“数据库窗口”右上角的“×”按钮,可关闭建立或打开的数据 库。3. 利用数据库管理器打开数据库? 选择“文件/打开数据库”命令,再选择子菜单中的一个数据库类型项, 弹出打开数据库对话框。 ? 选择数据库存放的目录和路径,找到所要打开的库文件名,双击它或 者选中年单击“打开”按钮。4. 利用可视化数据库管理器建立数据表结构数据表结构包括表中各个字段的名称、类型、大小等信息。 [实例 3-1-2]创建下面的数据表结构,名称为“职工工资发放明细表”,存54 放在“zygl”数据库中。数据表结构 字段名称 职工号 姓名 职称 技能工资 岗位工资 浮动工资 其他工资 扣款 实发工资 类型 Text Text Text Integerl 同上 同上 同上 Single 同上 字段长度 5 8 8 2 同上 同上 同上 4 同上 索引 主索引(zghsy)? 在数据库管理器窗口中打开“zygl.mdb”数据库,在“数据库窗口” 中右击鼠标,选择快捷菜单中的“新建表”命令,打开“表结构”对 话框。 ? 在“表名称”框中键入数据表名称“职工工资发放明细表”。 ? 单击“添加字段”按钮,在“添加字段”对话框的“名称”框中键入 “职工号”,按 Tab 键,在“类型”框中选择所需要的字段类型(默 认为“Text”),将“大小”框中的默认字段长度值改为“5”,单击 “确定”按钮和“关闭”按钮,返回“表结构”对话框,单击“添加 索引” 按钮, “添加索引” 在 对话框的 “名称” 框中键入索引名称 “zghsy” , 在“可用字段”框中选择“职工号”字段,该字段即添加到“索引的55 字段”列表框中。建立索引的目的是为了提高数据的检索速度。每个 索引必须有一个名称,一个索引可以是一个字段,也可以是多个字段, 但其中必有一个是主索引。 如果要使某个字段或几个字段的值不重复, 可以建立索引,并且要选中“唯一的”复选框,否则一定不要选中它。 主索引通常应是唯一索引,其值不能为空(Not Noll),所以本例不应 选中“忽略空值”复选框。 ? 索引参数输入完毕后,单击“确定”和“关闭”按钮返回“表结构” 对话框,在“索引列表”框中可以看到刚才所建立的索引名称。 ? 接着按上述方法继续添加完剩余的字段。所有字段输入完毕后,单击 “关闭”按钮返回“表结构”对话框,单击“生成表”按钮,在数据 管理器的“数据库窗口”中可以看到所生成的数据表结构。表结构以 树型显示,包括“Fields” (字段)、 “Index” (索引)和“Properties” (属性)等内容。5. 利用数据管理器修改数据表结构打开要修改的数据表的数据库,在“数据库窗口”中右击想要修改结 构的数据表名称,选择快捷菜单中的“设计”命令,打开“表结构”对话 框,然后根据需要进行修改(包括更改表名称、字段名称和索引名称,添 加或删除字段或索引等)。6. 利用数据管理器对数据查询、添加、删除、修改、查找等操作(3) 查询信息56 查询是指按照一定的条件检索数据表中的某些信息。 [实例 3-1-3]在职工工资放发明细表中检索技能工资高于等于 600 元或低 于 400 元的信息。 ? 通过数据库管理窗口打开职工工资发放明细表所在的数据库 zygl。 ? 选择“实用程序/查询生成器”命令,打开“查询生成器”对话框。 ? 在“表”框中单击选中“职工工资发放明细表”数据表。 ? 在“字段名称”列表框中选择“职工工资发放明细表.技能工资”字段。 ? 在“运算符号”列表框中选择“&=”运算符。 ? 单击“列出可能的值”按钮,使技能工资字段的所有值列入“值”列 表框中,然后从中选择“600”(也可以直接在值框输入所需要的数据 值)。 ? 单击“将 Or 加入条件”按钮,“条件”框中即显示“职工工资发放 明细表.技能工资 &= 600”。 ? 在 “运算符” 列表框中选择 “&” 运算符, “值” 在 列表框中选择 “400” , 再单击“将 Or 加入条件”按钮,“条件”框中即显示“职工工资发 放明细表.技能工资 &= 600 Or 职工工资发放明细表.技能工资 & 400”。 ? 单击“运行”按钮,执行查询。57 (2)输入数据(快照类型记录集按钮不能被选中) [实例 3-1-4]在职工工资放发明细表中添加新的字段。 ? 打开职工工资发放明细表所在的数据库 zygl。 ? 选择“实用程序/查询生成器”命令,打开“查询生成器”对话框。 ? 在“表”框中单击选中“职工工资发放明细表”数据表,单击“运行” 按钮,弹出选择对话框。 ? 单击“添加”按钮,弹出字段输入对话框,然后按要添加的字段的值。 ? 输入完毕后,单击“更新”按钮,新字段即添加到数据表中。 (3)根据指定条件查找记录 [实例 3-1-5]在职工工资放发明细表中查找钟志强的信息。 ? 打开职工工资发放明细表所在的数据库 zygl。 ? 选择“实用程序/查询生成器”命令,打开“查询生成器”对话框。 ? 在“表”框中单击选中“职工工资发放明细表”数据表,单击“运行” 按钮,弹出选择对话框。 ? 单击“查找”按钮,弹出“Visdata”对话框,在“输入搜索表达式” 文本框中输入搜索表达式:姓名=’钟志强’”,单击“确定”按钮。 (4)按指定字段对表中的记录排序58 [实例 3-1-6]对职工工资放发明细表中数据按实发工资排序。 ? 打开职工工资发放明细表所在的数据库 zygl。 ? 选择“实用程序/查询生成器”命令,打开“查询生成器”对话框。 ? 在“表”框中单击选中“职工工资发放明细表”数据表,单击“运行” 按钮,弹出选择对话框。 ? 单击“排序”按钮,弹出“VisData”对话框,在文本框中输入排序列 的名称“实发工资”,单击“确定”按钮。 (5)删除记录 [实例 3-1-7]在职工工资放发明细表中删除钟志强的信息。 方法 1: ? 打开职工工资发放明细表所在的数据库 zygl。 ? 选择“实用程序/查询生成器”命令,打开“查询生成器”对话框。 ? 在“表”框中单击选中“职工工资发放明细表”数据表,在“字段” 列表框中选择“姓名”,在“运算符”框中选择“=”,在“值或表达 式”框中输入表达式值“钟志强”,单击“运行”按钮。 ? 单击“删除”按钮,再单击询问对话框上的“是”按钮。 方法 2:59 ? 打开职工工资发放明细表所在的数据库 zygl。 ? 选择“实用程序/查询生成器”命令,打开“查询生成器”对话框。 ? 在“表”框中选中“职工工资发放明细表”,单击“运行”按钮。 ? 单击“查找”按钮,输入查找表达式:姓名=’钟志强’,单击“确定” 按钮,然后单击“删除”按钮和“是”按钮。 (6)全局替换字段数据 [实例 3-1-8]在职工工资放发明细表中将职称为教授的人员的技能工资 700 元。 ? 打开职工工资发放明细表所在的数据库 zygl。 ? 选择“实用程序/全局替换”命令,打开“全局替换”对话框。 ? 在 “字段” 框中单击选中 “技能工资” 在 项, “替换为” 框中输入 “700” , 在“条件”框中输入条件:职称=&教授&,单击“确定”按钮。3.1.5 数据环境设计器(Data Environment Designer)利用 VB 的数据环境设计器可以建立 ADO 数据访问的数据源――数 据环境 (Data Environment) 数据环境设计器所创建的 Data Environment 。 对象包括 Connection、Command 等 ADO 对象,这些对象可以被整个工 程所使用。 [实例 3-1-9]通过数据环境访问 zygl.mdb 中的职工工资放发明细表。 1. 创建应用程序界面控件名称 属性60属性值 FormName captionForm1 数据环境应用示例1. 向工程中添加数据环境 单击“工程/Data Environment”命令。 2. 创建连接对象 ? 右击“Connection1”项,选择快捷菜单中的“属性…”命令,弹出“数 据链接属性”对话框,并选择“Microsoft Jet 4.0 OLE DB Provider” 项(表示数据源的提供者是 Microsoft Jet 4.0) ,再单击“连接”标签, 在“选择或输入数据库名称”框中选择“D:\zygl” (连接的数据库名称 及其具体路径) ,单击“测试连接”按钮。若连接成功,则单击“确定” 按钮,返回“Data Enviroment”对话框。 ? 右击“Connection1” ,选择快捷菜单中的“添加命令”项,添加一个 “Command1”命令。 ? 右击“Command1” ,选择快捷菜单中的“属性…”命令,在弹出的 “Commad1 属性”对话框的“数据库对象”下拉框中选择“表” ,在 “对象名称”下拉框中选择“职工工资发放明细表” ,单击“确定”按 钮返回。此时,展开“Commad1” ,即可看到所选表中的所有字段。 3. 编写程序代码Dim cx As DataEnvironment1 Private Sub Command1_Click() cx.Command161 Text1.Text = cx.rsCommand1.Fields(&职工号&) Text2.Text = cx.rsCommand1.Fields(&姓名&) Text3.Text = cx.rsCommand1.Fields(&职称&) Text4.Text = cx.rsCommand1.Fields(&技能工资&) Text5.Text = cx.rsCommand1.Fields(&岗位工资&) Text6.Text = cx.rsCommand1.Fields(&浮动工资&) Text7.Text = cx.rsCommand1.Fields(&其他工资&) Text8.Text = cx.rsCommand1.Fields(&扣款&) Text9.Text = cx.rsCommand1.Fields(&实发工资&) End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Load() Set cx = New DataEnvironment1 End Sub3.1.6 数据视图窗口通过数据视图窗口可以查看当前连接的数据库对象,包括数据表 (Table)、视图(View)、存储过程(Stored Procedure)。在数据视图 窗口中,通过鼠标双击、拖放、右击等动作,即可快速地启动、创建和编 辑上述数据库对象,同时还能帮助用户维护数据源。 1. 启动数据视图窗口 在 VB 环境下,单击“视图/数据视图窗口”菜单命令,或者单击工具 栏上的“数据视图窗口”按钮。 2. 创建新对象 (1)为当前工程添加数据环境对象62单击“数据视图”窗口工具栏上的 “添加数据环境到当前工程”按钮。 (2)添加新的数据连接 数据连接”按钮。 3. 查看数据 (1)单击某个连接(如 DataLink1)左边的“+”号,可看到该连接所包 含的表、视图、存储过程等对象。 (2)双击某个表名称,可以打开该表,显示其内容,并可以编辑、增加 新的数据内容。 (3)在运行表窗口中右击鼠标,选择快捷菜单中的相应选项,可以进行 相应的操作。 单击“数据视图”窗口工具栏上的“添加新的3.2 配置数据源数据源为数据连接提供数据和方法。因此,建立数据库连接时,第一 步就是配置数据源,即为数据控件设置好连接的源对象。目前,ODBC 数 据源在数据连接中占首选地位,下面介绍如何配置 ODBC 数据源。 3.2.1 “ODBC 数据源管理器”窗口 “ODBC 数据源管理器”窗口,是配置、添加和}

我要回帖

更多关于 access登录窗体代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信