1、第6章 数据库的开发第6章 数据库的开发 6.1 数据库基本知识 6.2 ADO.NET组件 6.3 数据库开发实例 习题 实验六 数据库开发 第6章 数据库的开发 6.1 数据库基本知识数据库基本知识数据库(Database,DB),顾名思义就是数据的集合。数据库是把一些相互间有一定联系的数据按照一定的数据模型组织起来,例如,关系数据库就是把数据库中的数据按照关系数据模型组织起来。数据库具有较小的数据冗余,较高的数据独立性和安全性,并允许许多个用户并发地访问数据库。数据库管理系统(DataBase Management System,DBMS)则是对数据进行有效管理的计算机软件,使用这一软件
2、能方便地定义和操纵数据,维护数据的安全性和完整性,对多用户访问数据库的并发操作进行控制并对数据库进行维护。第6章 数据库的开发一个完整的数据库系统由数据库、数据库管理系统、计算机软件和硬件系统及数据库管理员(DataBase Administrator,DBA)组成。数据库管理系统是数据库系统的核心,数据库的一切操作包括数据库的建立,数据的检索、修改、删除操作以及对数据的各种控制,都是通过DBMS来实现的。数据库中常用的数据模型包括层次模型、网状模型和关系模型。其中,20世纪60年代末期提出的关系模型具有简单灵活、易学易懂并且其理论建立在雄厚的数学基础之上等特点,目前广泛使用的数据库软件都是基
3、于关系模型的关系数据库管理系统。第6章 数据库的开发现实世界由实体(Entity)和实体之间的联系(Relationship)构成。所谓实体,是指现实世界中客观存在且可相互区分的事物。所谓联系,是指实体之间的关系,即实体之间的对应关系。通过联系就可以利用一个实体的信息来查找与此相关的另一个实体的信息。关系模型中的数据结构只有关系(即表)这一种。表的每一行描述实体的一个实例,每一列则描述实体的一个特征或属性。通常所说的关系数据库是由相关的多张表组成的,表与表之间的联系对应实体间的联系。在计算机中,表的一行称为记录,一列称为字段。表6-1描述的图书信息表由书号、书名、作者等6个字段构成。第6章 数
4、据库的开发创建数据库时需做两件事:首先利用DBMS创建数据库;然后再创建其中的数据表(一个数据库可以包含多个数据表),即定义数据表的结构,也就是定义一个数据表中的字段。至此数据库的结构定义完毕,接下来的工作就是往数据库中装入数据,即往数据库中输入记录。第6章 数据库的开发表 6-1 图 书 信 息 表 书 号 书 名 作 者 出 版 社 出版日期 单 价 7-302-07244-2 数据库实用教程 丁宝康 清华大学出版社 2003.11 38.00 7-302-07884-X 数据库技术及其在网络中的应用 王育平 清华大学出版社 2004.3 32.00 7-113-06686-0 数据库应用
5、技术(SQL Server 2000)审时凯 中国铁道出版社 2005.8 27.00 7-302-12954-1 Visual Basic.NET 实验指导与编程实例 李印清 清华大学出版社 2006.5 15.00 第6章 数据库的开发【案例案例6-1】图书管理系统。使用Microsoft Access 2000作为数据库管理系统来创建名为Tsgl的图书管理数据库,包含一个名为tushu的图书信息表,如表6-1所示。此数据表有6个字段,分别为书号、书名、作者、出版社、出版日期和单价。【技能目标技能目标】(1)启动Microsoft Access 2000。(2)新建数据库和数据表。(3)了
6、解数据库管理系统(DBMS)及其基本操作。第6章 数据库的开发【操作要点与步骤操作要点与步骤】(1)启动Access,打开如图6-1所示的新建数据库窗体。选择“空Access数据库”单选按钮,单击“确定”按钮,输入数据库文件名称Tsgl.mdb,并选择数据库文件存放的目录,然后单击“创建”按钮,打开如图6-2所示的“Tsgl:数据库”窗体。至此,就创建了一个名为Tsgl的数据库。第6章 数据库的开发图6-1 “新建数据库”窗体 第6章 数据库的开发图6-2 “Tsgl:数据库”窗体 第6章 数据库的开发(2)创建数据库中的数据表。双击“使用设计器创建表”命令,弹出数据表设计窗体。依次输入各字段
7、的名称,并指定字段的数据类型。另外,为了提高效率,每个数据表都应该有一个主键字段,主键字段定义了表中记录的唯一性。将“书号”字段定义为表的主键字段。至此,就可得到如图6-3所示的效果。从“文件”菜单中选择“保存”命令,保存该表,命名为tushu,并关闭tushu表的设计窗体。此时,在“Tsgl:数据库”窗体中显示已建立的tushu表。若数据库中包含多个数据表,则需要重复上述过程。第6章 数据库的开发图6-3 数据表设计窗口 第6章 数据库的开发(3)往数据表中输入数据。具体方法是双击tushu表,打开如图6-4所示的窗体,输入记录内容,并单击“保存”按钮。图6-4 在新表中输入数据 第6章 数
8、据库的开发【相关知识相关知识】知识点知识点6-1-1SQL简介SQL是英文Structured Query Language的缩写,意思为结构化查询语言,它被作为关系型数据库管理系统的标准语言,可以用来实现各种各样的数据库操作,例如数据定义、数据查询、插入记录、删除记录、修改记录以及数据库控制。目前,绝大多数流行的关系型数据库管理系统(如Oracle、Sybase、Microsoft SQL Server、Access等)都采用SQL标准,并且对SQL进行了扩展。下面简单介绍SQL中的基本语句。第6章 数据库的开发1INSERT语句语句利用INSERT语句可以向数据库表中插入或添加新的记录。I
9、NSERT语句的书写格式如下:INSERT INTO 表名(字段名1,字段名2,)VALUES(表达式1,表达式2,)上述语句的功能是:向“表名”指定的表中插入一条记录。其中,括号中列出将要添加新值的字段名;VALUES子句中列出该记录的各字段值,并且各字段值的顺序应与指定的字段名顺序一致,即“表达式1”的值作为“字段名1”中的数据,“表达式2”的值作为“字段名2”中的数据,以此类推。如果要给记录的所有字段输入值,则表名后面的字段名列表可以省略,但插入数据的类型必须与表中相应字段的数据类型一致。若只需要插入表中某些字段的数据,则需列出要插入数据的字段名,并给出相应的值。第6章 数据库的开发例如
10、,向tushu表中插入一条记录,并为书名、作者和出版社字段赋值,该语句可写为INSERT INTO tushu(书名,作者,出版社)VALUES(“细胞生物学”,“王金发”,“科学出版社”)2DELETE语句语句当表中的记录已经失效时,应使用DELETE语句将其删除。该语句的格式如下:DELETE FROM 表名WHERE 条件上述语句的功能是:从由“表名”指定的表中删除满足给定“条件”的记录,当省略WHERE子句时,表示删除表中的全部记录。例如,从tushu表中删除所有科学出版社出版的图书,该语句可写为DELETE FROM tushu WHERE 出版社=科学出版社第6章 数据库的开发3U
11、PDATE语句语句UPDATE语句的格式为UPDATE 表名 SET 字段名1=表达式1,字段名2=表达式2 WHERE条件上述语句的功能是:对指定表中满足“条件”的记录进行修改,若无WHERE子句,则修改表中的所有记录。修改记录时以“表达式1”的值替换“字段名1”中的值,以“表达式2”的值替换“字段名2”中的值,以此类推。例如,将tushu表中书名为“高级语言C+程序设计”的单价增加15元,其修改语句为UPDATE tushu SET 单价=单价+15 WHERE 书名=高级语言C+程序设计第6章 数据库的开发4SELECT语句语句SELECT是一个功能强大的数据查询语句,它由多个子句组成,
12、通过这些子句可以实现对数据库的各种查询。该语句最基本的书写格式如下:SELECT 字段名列表 FROM 表名WHERE条件其中,“字段名列表”是若干个字段的列表,字段名之间用逗号分开。该语句的功能是从指定的表中查询满足“条件”的记录,查询结果中包含由“字段名列表”列出的字段信息。如果省略WHERE子句,则表示显示所有记录。例如:SELECT 书名,作者,单价 FROM tushu WHERE 出版者=科学出版社其作用是从tushu表中查询科学出版社的书籍,并列出其书名、作者和单价。第6章 数据库的开发需要说明的是,SELECT语句的功能非常强大,要了解该语句的其他用法,读者可参阅数据库系统概论
13、等书籍。知识点知识点6-1-2VB.NET对数据库开发的支持数据库开发包括数据库设计和开发访问数据库数据的应用程序。前者可以用数据库管理系统来实现;后者则可以使用各种软件开发工具来完成,如VB.NET等。第6章 数据库的开发虽然数据库中的数据在磁盘上也体现为文件,但是这些文件的管理是由数据库管理系统来完成的。因此在设计数据库应用程序时,不能像访问文件那样直接读取数据,而是需要借助于某种编程接口才能访问数据库中的数据。美国微软公司提出的ODBC(Open DataBase Connectivity,开放数据库互联)接口能以统一的方式访问数据。然而,由于ODBC具有效率较低,使用具有一定的局限性等
14、缺点,因此,随着技术的发展,出现了ADO(ActiveX Data Objects,活动数据对象)技术。在推出Visual Studio.NET的同时,微软提出了一种新的数据访问技术,即ADO.NET。ADO.NET满足了3个重要需求:断开的数据访问模型(这对Web环境至关重要),与XML的集成以及与.NET框架的无缝集成。因此,利用VB.NET开发数据库应用程序时通常优先选择ADO.NET,以实现数据的访问。ADO.NET作为一种数据访问技术,是.NET技术体系的固有部分,微软已经将ADO.NET技术的绝大部分封装在类和组件中。因此,可以直接使用这些类的对象来访问数据库中的数据。第6章 数据
15、库的开发6.2 ADO.NET组件组件ADO.NET是为.NET框架创建的,是对ADO对象模型的扩充。ADO.NET提供了一组数据访问服务的类,用于实现对不同数据源的一致访问,例如Microsoft SQL Server 数据源、Oracle数据源,以及通过OLE DB和XML公开的数据源等。设计ADO.NET组件的目的是从数据操作中分解出数据访问,通过.NET数据提供程序和DataSet组件实现此功能。其中,.NET数据提供程序是数据提供者,包括Connection、Command、DataReader和DataAdapter等对象;DataSet组件用于实现对结果数据的存储,以独立于数据源
16、的数据访问。图6-5所示为ADO.NET组件的结构。第6章 数据库的开发图6-5 ADO.NET组件的结构 数据库XML第6章 数据库的开发1DataSet数据集数据集DataSet是ADO.NET结构的核心组件,其作用在于实现独立于任何数据源的数据访问。DataSet在任何数据源中检索后得到数据并且将其保存在缓存中,它包含表以及所有表的约束、索引和关系。因此,也可以把它看做是内存中的一个小型关系数据库。一个DataSet对象包含一组DataTable对象和DataRelation对象,其中每个DataTable对象由一组DataRow、DataColumn和Constraint对象组成。这些
17、对象的含义如下:DataTable对象:代表数据表。DataRelation对象:代表两个数据表之间的关系。第6章 数据库的开发 DataRow对象:代表DataTable中的数据行,即记录。DataColumn对象:代表DataTable中的数据列,包括列的名称、类型和属性。Constraint对象:代表DataTable中主键(或称主码)、外键(或称外码)等约束信息。除了以上对象以外,DataSet中还包含DataTableCollection和DataRelation Collection等集合对象。DataRow方法只能生成一个DataRow对象,并不能向表中添加新的行。第6章 数据库
18、的开发2NET Framework数据提供程序数据提供程序 ADO.NET结构的另一个核心元素是.NET数据提供程序,设计该组件的目的是实现数据操作和对数据的快速、只读访问。数据提供程序在应用程序和数据源之间起着桥梁的作用。数据提供程序用于从数据源中检索数据并且保证对数据的更改与数据源一致。常用的数据提供程序包括SQL Server.NET Framework数据提供程序和OLE DB.NET Framework数据提供程序。表6-2列出了.NET框架中包括的.NET数据提供程序。第6章 数据库的开发表 6-2 .NET 框架中包含的.NET 数据提供程序.NET 数据提供程序 说 明 SQL
19、 Server.NET Framework 数据提供程序 对于 Microsoft SQL Server7.0 或更高版本 OLE DB.NET Framework 数据提供程序 对于使用 OLE DB 公开的数据源 第6章 数据库的开发1)SQL Server.NET Framework数据提供程序SQL Server.NET Framework数据提供程序使用自身的协议与SQL Server进行通信。可以直接访问SQL Server而不用添加OLE DB或开放式数据库连接(ODBC)层,因此它的实现更加精简,并且具有良好的性能。SQL Server.NET Framework数据提供程序类
20、位于System.Data.SqlClient命名空间。其引入代码如下:Imports System.Data.SqlClient需要说明的是,若要使用SQL Server.NET Framework数据提供程序,则必须具有对Microsoft SQL Server7.0或更高版本的访问权;对于Microsoft SQL Server的较早版本,可使用SQL Server OLE DB数据源进行通信。第6章 数据库的开发2)OLE DB.NET Framework数据提供程序OLE DB.NET Framework数据提供程序通过OLE DB服务组件和数据源的OLE DB提供程序与OLE DB
21、数据源进行通信。OLE DB.NET Framework数据提供程序类位于System.Data.OleDb命名空间。其引入代码如下:Imports System.Data.OleDb3ADO.NET对象及组件对象及组件 .NET数据提供程序包含4个核心元素:Connection、Command、DataReader和DataAdapter对象。这些对象及其功能如表6-3所示。第6章 数据库的开发表 6-3 ADO.NET 中的核心对象 对 象 功 能 Connection 建立与指定数据源之间的连接 Command 执行对数据源的操作 DataReader 采用只进方式从数据源中读取只读数据
22、流,是一个简易的数据集 DataAdapter 用数据源填充 DataSet 并保证数据的一致性 第6章 数据库的开发Connection对象提供与数据源的连接;Command对象能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令;DataReader用于从数据源中提供高性能的数据流;DataAdapter提供连接DataSet对象和数据源的桥梁。DataAdapter使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,并使对DataSet中数据的更改与数据源保持一致。1)Connection对象在对数据源进行操作之前,首先需要建立与数
23、据源的连接。可以使用Connection对象来创建连接对象。第6章 数据库的开发Connection对象可以和DataAdapter对象一起创建,即从“工具箱”中拖放DataAdapter组件到组件区时,创建了一个DataAdapter对象,同时也创建了一个Connection对象。根据所用的.NET Framework数据提供程序的不同,连接对象一般分为SqlConnection对象和OleDbConnection对象。其中,连接SQL Server 7.0以上版本的数据库时,需使用SqlConnection对象;要连接SQL Server 7.0以前的数据库或连接OLE DB数据源时,需要
24、使用OleDbConnection对象。第6章 数据库的开发连接对象最重要的属性是ConnectionString,该属性用来设置连接字符串。其中,SqlConnection对象的典型连接字符串如下:“Data Source=MySQLServer;Initial Catalog=Northwind;User ID=sa;Password=”“;”而OleDbConnection对象的典型连接字符串如下:“Provider=SQLOLEDB;Data Source=MySQLServer;Initial CataLog=Northwind;User ID=sa;Password=”“;”其中:
25、Data Source指明数据库服务器的位置可以是电脑名称、IP地址、localhost(代表使用本机作服务器)等。Initial Catalog指明要连接的数据库名称。User ID和Password指明登录数据库服务器的账户和密码。第6章 数据库的开发 Provider指定OLE DB Provider。例如MSDASQL为ODBC的OLE DB Provider,Microsoft.Jet.OLEDB.4.0为Access的OLE DB Provider,SQLOLEDB为SQL Server的OLE DB Provider。2)Command对象在与数据源建立连接之后,可使用Comma
26、nd对象来执行对数据源的查询、插入、删除、修改等操作。具体操作可以使用SQL语句,也可以使用存储过程。同样,根据所用的.NET Framework数据提供程序的不同,Command对象一般分为SqlCommand对象和OleDbCommand对象。第6章 数据库的开发Command对象的常用属性包括以下几种:CommandType属性:用来选择Command对象要执行的命令类型。该属性可以取Text、StoreProcedure和TableDirect三种不同的值。CommandText属性:根据CommandType属性的取值,设置要执行的SQL命令、存储过程名或表名。Connection:
27、用来设置要使用的Connection对象名。3)DataReader对象DataReader对象是一个简单的数据集,可实现从数据源中检索数据,并将检索结果保存为快速、只向前、只读的数据流。根据所用的.NET Framework数据提供程序的不同,DataReader分为SqlDataReader和OleDbDataReader。DataReader对象可通过Command对象的ExeculteReader方法从数据源中检索数据来创建。第6章 数据库的开发4)DataAdaper对象DataAdaper对象的主要功能是从数据源中检索数据,填充DataSet对象中的表,把用户对DataSet对象的
28、更改写入到数据源。根据所用的.NET Framework数据提供程序的不同,DataAdaper对象分为SqlDataAdapter和OleDbDataAdapter。DataAdapter对象的常用属性包括InsertCommand、DeleteCommand、SelectCommand和Updata Command,这些属性用来获取SQL语句或存储过程,分别实现在数据源中插入新记录、删除记录、选择记录和修改记录。通常将这些属性设置为某个Command对象的名称,由该Command对象执行相应的SQL语句。第6章 数据库的开发DataAdapter对象的常用方法有以下几种:Fill方法。其功
29、能是从数据源中提取数据以填充数据集。该方法有多种书写格式,其常用的一种格式如下:Public Function Fill(ByVal dataSet as DataSet,ByVal srcTable as String)As Integer上述语句的功能是:从参数srcTable指定的表中提取数据以填充参数dataSet指定的数据集,其结果返回dataSet中成功添加或刷新的记录个数。第6章 数据库的开发Fill方法具有自动打开连接并在操作结束后立即关闭连接的功能。Update方法。该方法主要用于修改数据源。该方法也有多种书写格式,其常用的一种格式如下:Public Overridable
30、Function Update(ByVal dataSet as DataSet)As Integer上述语句的功能是:把对参数dataSet指定的数据集进行的插入、更新或删除操作更新到数据源中。这种格式通常用于数据集中只有一个表的情况,其结果返回dataSet中被成功更新的记录个数。第6章 数据库的开发5)DataSet对象DataSet对象的组成已在前面做过介绍,下面仅介绍DataSet对象的填充和访问,以及如何利用DataSet对象更新数据源。数据集是容器,因此需要用数据填充它。DataSet对象的填充可以通过调用DataAdapter对象的Fill方法来实现。该方法使得DataAdap
31、ter对象执行其SelectCommand属性中设置的SQL语句或存储过程,然后将结果填充到数据集中。访问DataSet对象中的数据,如访问数据集中某数据表的某行某列数据,可使用如下方法:DataSet对象名.TableS数据表名.Rowsn 列名第6章 数据库的开发上述语句的功能是:访问“DataSet对象名”指定的数据集中“数据表名”指定的数据表的第n+1行中由“列名”确定的列。n代表行号,且数据表中行号从0开始计。以下语句显示了如何访问名为dsBook的数据集中tushu表第1行的“书名”列。dsBook.Tables“tushu”.Rows0“书名”虽然可以访问DataSet对象中的数
32、据,并对之进行更改,但是数据更改实际上并没有写入到数据源中。要将数据的更改传递给数据源,需要调用DataAdapter对象的Update方法来实现。第6章 数据库的开发6)ADO.NET数据组件在VB.NET中访问数据库,既可以通过上述ADO.NET对象编程实现,也可以使用ADO.NET提供的数据组件实现。使用ADO.NET数据组件访问数据只需将它们拖动到窗体上,根据向导配置相应属性。和DataSet、Connection、Command、DataAdapter对象相对应,ADO.NET数据组件包括DataSet、Connection、Command、DataAdapter等。在工具箱的“数据
33、”工具组中可以查看到这些组件,如图6-6所示。根据所用的.NET Framework数据提供程序的不同,数据组件分为两组:SqlDataAdaper、SqlConnection、SqlCommand和OleDbDataAdaper、OleDbConnection、OleDbCommand,分别对应于SQL Server.NET Framework和OLE DB.NET Framework两个数据提供程序提供的不同数据源。第6章 数据库的开发图6-6 ADO.NET提供的数据组件 第6章 数据库的开发由于数据组件与数据访问对象的属性、方法和作用均相同,因此不再赘述。4开发数据库应用程序的一般步骤
34、开发数据库应用程序的一般步骤使用ADO.NET开发数据库应用程序的一般步骤如下:(1)使用Connection对象建立与数据源的连接。(2)使用Command对象执行对数据源的操作命令,通常使用SQL命令。(3)使用DataAdapter、DataSet等对象对获得的数据进行操作。(4)使用数据控件(如DataGrid等)向用户显示操作的结果。第6章 数据库的开发6.3 数据库开发实例数据库开发实例本节将实现Windows窗体中的简单数据访问,阐述通过窗体访问数据库的基本过程,并说明ADO.NET数据组件和对象的使用方法。【案例案例6-2】图书管理数据库系统。已知在E盘下有一个用于图书管理的名
35、为Tsgl.mdb的Access数据库,该数据库中有一个名为tushu的表,用来存放图书信息,通过编程来实现利用数据网格(DataGrid)控件显示表中的数据,并且编辑数据以更新数据库。该系统的设计可概括为以下几个步骤。(1)创建Windows窗体。第6章 数据库的开发(2)配置数据连接Connection 对象和数据适配器DataAdapter对象。(3)创建和配置DataSet对象,用于存储查询结果。(4)向窗体添加DataGrid控件,并将其绑定到数据集上。(5)通过添加代码来填充数据集。(6)添加代码,将数据的更改发送回数据库。上述步骤执行后将建立如图6-7所示的界面。【技能目标技能目
36、标】(1)创建Windows窗体,配置相关对象和控件。(2)掌握ADO.NET数据组件和对象的使用方法。(3)掌握简单数据库应用程序的开发方法。第6章 数据库的开发图6-7 图书管理数据库运行界面 第6章 数据库的开发【操作要点与步骤操作要点与步骤】(1)创建项目和窗体。创建一个新项目,项目命名为TSGLXT,并在Windows窗体设计器中显示新窗体。(2)创建并配置数据连接和数据适配器。可以使用向导创建数据适配器。该适配器包含用于读取和写入数据库信息的SQL语句。该向导可以帮助定义所需的SQL语句。如有必要,该向导还可以创建与数据库的连接。运行效果如图6-12所示。具体操作步骤如下:在“工具
37、箱”的“数据”选项卡中,将OleDbDataAdapter对象拖到窗体上。“数据适配器配置向导”启动后,可以帮助创建连接和适配器。在该向导中,执行下列操作:创建或选择一个指向E:Tsgl.mdb数据库的连接。先选择OLE DB提供程序,如图6-8所示;再选择数据库,如图6-9所示。第6章 数据库的开发图6-8 OLE DB提供程序 第6章 数据库的开发 图6-9 选择数据库 选择数据库单击测试连接第6章 数据库的开发 指定要使用SQL语句,如图6-10所示。创建以下SQL语句,生成的SQL语句如图6-11所示。select书号,书名,作者,出版社,出版日期 from tushu第6章 数据库的
38、开发图6-10 选择SQL语句查询方式 第6章 数据库的开发图6-11 生成SQL语句 生成SQL语句第6章 数据库的开发为了更方便地生成SQL语句,可以通过单击“查询生成器”来完成。如图6-12所示,单击“完成”按钮,此时,可以获得一个OleDbConnection1连接,该连接包含如何访问数据库的信息。另外,还将拥有一个数据适配器OleDbAdapter1,其中包含要访问数据库中哪个表和哪些列的查询语句。第6章 数据库的开发图6-12 完成数据适配器配置 第6章 数据库的开发如果数据表没有设置主键,则生成INSERT语句、UPDATA语句、DELETE语句会出现不成功现象。(3)创建数据集
39、。建立数据库连接之后,VB.NET可以基于数据适配器中设置的SQL查询语句自动生成数据集。方法如下:从“数据”菜单中选择“生成数据集”,显示“生成数据集”对话框,如图6-13所示。第6章 数据库的开发图6-13 “生成数据集”对话框 输入数据集名选中数据表选中此项第6章 数据库的开发 选择“新建”选项,将数据集命名为dsTushu,在“选择要添加到数据集中的表”列表中,应选择tushu表。确保“将此数据集添加到设计器”已选中,然后单击“确定”按钮。此时,VB.NET将数据集的一个实例dsTushu添加到窗体中,如图6-14所示。(4)向窗体添加DataGrid控件并将其绑定到数据集上。在窗体中
40、显示数据集内的数据有两种方法:一种是使用DataGrid控件同时显示数据集内的所有记录;另一种是使用文本框等单个控件一次显示一个记录(该方法要求向窗体添加导航功能)。第6章 数据库的开发图6-14 自动生成名为dsTushu的数据集对象 生成dsTushu对象第6章 数据库的开发在本案例中,使用前一种方法。需要注意的是,DataGrid控件必须绑定到数据集才能显示其中的数据。其操作步骤如下:在“工具箱”的“Windows窗体”选项卡中,将DataGrid控件拖到窗体上,如图6-15所示。在DataSource属性中,选择dsTushu作为数据源。在DataMember属性中,选择tushu。第
41、6章 数据库的开发图6-15 向“工具箱”的“Windows窗体”添加DataGrid控件 第6章 数据库的开发设置这两个属性值的目的是将dsTushu数据集内的tushu数据表绑定到DataGrid控件。调整DataGrid控件的高度和宽度,以便看到多个行和列。(5)填充DataGrid控件。DataGrid控件被绑定到数据集之后,数据集不会被自动填写。为此必须调用数据适配器DataAdapter对象的Fill方法来填充数据。具体方法如下:在“工具箱”的“Windows窗体”选项卡中,将Button控件拖到窗体上。将该按钮命名为btnList,设置其Text属性为“显示”,如图6-16所示。
42、第6章 数据库的开发图6-16 添加“显示”按钮 修改按钮名第6章 数据库的开发 双击该按钮,编写如下Click事件处理过程:Private Sub btnList_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs)Handles btnList.Click dsTushu.Clear()清空数据集 OleDbDataAdapter1.Fill(dsTushu)传递要填充的数据集End Sub(6)更新数据库。更新数据库需要执行两个步骤。第一步,更新数据集。在Windows窗体中,DataGrid控件被绑定在数据
43、集上,因此,在DataGrid控件中对数据库进行更新后,该控件会自动地将更新保存在数据集内。由于数据集是独立于数据源的,也就是说,更新数据集的同时没有将更新直接写入数据源,因此必须执行第二步,即利用已更改的数据集更新数据源。这可以通过调用DataAdapter对象的Update方法来完成,该方法检查数据集内指定数据表中的每个记录。如果某记录已更改,则向数据库发送相应的“更新”(Update)、“插入”(Insert)或“删除”(Delete)命令。第6章 数据库的开发在本案例中,向窗体添加一个按钮,以便单击时将数据集的更新发送到数据库。具体操作步骤如下:在“工具箱”的“Windows窗体”选项
44、中,将Button控件拖到窗体上。将该按钮命名为btnUpdate,设置其Text属性为“保存对数据库的修改”。双击该按钮,编写如下Click事件处理过程:Private Sub btnUpdate_Click(ByVal sender As System.object,_ ByVal e As System.EventArgs)Handles btnUpdate.Click 调用 DataAdapter 对象的 Update 方法,将数据集的更新发送到数据库中 OleDbDataAdapter1.Update(dsTushu)使用 MessageBox 表示确认信息 MessageBox.s
45、how(数据库已更新!)End Sub 第6章 数据库的开发(7)测试窗体。至此可以测试该窗体,实现在DataGrid控件中显示数据,并且用户可以进行更新。运行该窗体。在窗体显示后,单击“显示”按钮,在DataGrid控件中显示书籍列表。对DataGrid控件中的记录进行更改。再次单击“显示”按钮,将会发现所做的更改未被保留。这是因为没有将所做更改从数据集保存到数据库中,所以数据库重新加载数据并刷新DataGrid控件时,对数据做的更改没有被保留。再次对DataGrid控件中的记录进行更改,然后单击“保存对数据库的修改”按钮,并再次单击“显示”按钮。因为相应数据更新已保存到数据库中,所以数据库
46、重新加载数据时所做的的更改被保留下来,如图6-17所示。第6章 数据库的开发图6-17 程序显示界面 修改字段值第6章 数据库的开发【案例案例6-3】数据窗体向导使用。数据窗体向导是VB.NET中的一个数据库应用程序的辅助开发工具,利用它可以很容易地在窗体上显示数据库中的数据。下面以tushu表为例说明数据窗体向导的使用。【技能目标技能目标】(1)启动数据窗体向导。(2)熟悉数据窗体向导的基本操作。(3)掌握使用数据窗体向导开发简单数据库应用程序的方法。第6章 数据库的开发【操作要点与步骤操作要点与步骤】(1)新建一个Windows应用程序项目,选择“项目”“添加新项”选项。(2)选择“数据窗
47、体向导”图标,单击“打开”按钮,系统弹出“欢迎使用数据窗体向导”对话框。(3)单击“下一步”按钮,弹出“选择要使用的数据集”对话框。在该对话框上需要为程序中出现的数据集DataSet组件命名(本案例命名为dsTushu)。(4)单击“下一步”按钮,弹出“选择数据连接”对话框。这里需要设定数据库的连接。注意,此时可以使用已有连接,也可创建新的连接(本案例中将新建连接,如第(5)(9)步所示)。第6章 数据库的开发(5)单击“新建连接”按钮,弹出“数据链接属性”对话框。对话框中“连接”选项卡用来设置连接到SQL Server数据库的各项参数。由于本案例使用的Tsgl.mdb是Access数据库,因
48、此,首先需要在“提供程序”选项卡中选择OLE DB数据提供程序。(6)单击“提供程序”选项卡,选择Microsoft Jet 4.0 OLE DB Provider。(7)单击“下一步”按钮,这时在重新显示的“连接”选项卡中可以设置连接Access数据库的参数,输入要连接的数据库名称,也可以通过*按钮选择数据库。第6章 数据库的开发(8)单击“测试连接”按钮,若连接成功,则可以看到相应的提示信息。(9)单击“确定”按钮,返回到“选择数据连接”对话框,此时可看到新建的数据库连接。(10)单击“下一步”按钮,弹出“选择表或视图”对话框。此时应选择在数据窗体中显示哪个表或视图。本案例中Tsgl.md
49、b数据库中只有tushu一个表,在“可用项”列表中选择tushu,单击*按钮,将之添加到“选定项”列表中。(11)单击“下一步”按钮,弹出“选择要在窗体中显示的表和列”对话框,采用默认设置,在数据窗体上显示tushu表的所有列。第6章 数据库的开发(12)单击“下一步”按钮,弹出“选择显示样式”对话框,选择“单个控件中单个记录”单选按钮。(13)单击“完成”按钮,弹出新建的数据窗体(窗体名为DataForm1),窗体下方列出了所使用的数据组件。(14)由于利用数据窗体向导生成的窗体不是启动窗体,因此需要在默认生成的Windows窗体Form1上放置一个按钮,并为其Click事件添加如下代码:P
50、rivate Sub Button1_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs)Handles Button1.Click Dim d As New DataForm1()d.Show()End Sub 第6章 数据库的开发(15)运行程序,单击启动窗体上放置的按钮即可显示数据窗体,再单击数据窗体上“加载”按钮即可看到数据库中的数据。在数据窗体中可以浏览记录,还能够添加、删除记录。程序运行界面如图6-18所示。第6章 数据库的开发图6-18 程序运行界面 第6章 数据库的开发习习 题题思考题思考题1简述A