1、第14章 Visual Basic数据库编程,一、数据库基础和MicroSoft Access 2000 二、VB中使用ADO访问数据库 三、如何使用SQL语句得到符合要求的纪录集,导读,在计算机的应用系统中,对于大量的数据,通常用数据库来进行存储。使用数据库来存储比通过文件来存储效率更高。 在Visual Basic中可以用以下方法来访问数据库: 使用数据控件(data control)。 使用DAO对象。 使用ADO对象。,一、数据库基本概念与Microsoft Access,数据库(Database):是以一定的组织方式存储在计算机外存储器中的、相互关联的数据的集合。数据库是为满足某一组
2、织中多个用户的多种应用的需要而建立的。 数据库管理系统(DBMS):提供数据在数据库内的存放方式及管理能力的软件。,数据库具有以下特点:,数据的共享性:数据库中的数据能为多个应用服务。 数据的独立性:用户的应用程序与数据的逻辑组织和物理存储方式无关。 数据的完整性:数据库中的数据在维护活动中始终保持正确性。 数据库冗余数据较少。,数据库管理系统的主要功能,数据库定义功能; 数据存取功能; 数据库运行管理功能; 数据库的建立及日常维护功能; 数据库通信功能。,关系型数据库,现行的大部分数据库都采用关系模型,把每一个数据集合或数据间的联系看成是一张二维表,即关系表。 数据库(Database):所
3、有相关数据和规则的集合 数据表(Table):数据表简称表,由一组数据记录组成。 记录(Record):表中的每一行为一个记录,由若干字段组成。 字段(Field):也称域。表中的每一列称为一个字段。 主键(Primary Key):某个字段或某些字段的组合可以定义为主键。保证可以通过主键唯一标识一条记录。 查询(Query):查询用来从一个或多个表中获取一组指定的记录,一般用SQL语句来表达。,关系型数据库,目前流行的数据库管理系统,大中型数据库管理系统 Oracle,Sybase, Infomix,MS SQL Server等, 小型桌面数据库管理系统 Visual FoxPro 6.0,
4、 Microsoft Access 2000 本课以Microsoft Access为主进行介绍。,Microsoft Access 2000,Microsoft Access是一种桌面数据库管理系统,Access是 Visual Basic的内部数据库,即默认的数据库类型。 Access数据库的所有表和索引都存储在一个MDB文件中 演示讲解,二使用ADO访问数据库,在Visual Basic中,可用的数据访问接口有三种: ActiveX数据对象(ADO,ActiveX Data Objects) 远程数据对象(RDO,Remote Data Objects) 数据访问对象(DAO,Data
5、Access Objects)。 数据访问技术总是在不断进步,而这三种接口的每一种都分别代表了该技术的不同发展阶段。最新的是ADO,它是比RDO和DAO更加简单,然而却更加灵活的对象模型。对于新工程,应该使用ADO作为数据访问接口。,二使用ADO访问数据库,ADO最主要的优点是易于使用,速度快,内存支出少。 ADO支持建立客户端/服务器和基于Web的应用程序的关键功能。ADO是实现Internet数据库访问的基础。利用ADO不仅可以通过一个Web网页实现对数据库的访问。,二使用ADO访问数据库,初步使用ADO要学习两个基本控件和一个对象 ADODC控件:ADO数据控件,用于连接数据源,生成Re
6、cordSet RecordSet对象:记录集对象,用于对数据记录进行操作 DataGrid控件:数据表格控件,用于显示RecordSet中的数据记录,二使用ADO访问数据库,ADO数据控件(ADODC),ADO数据控件的用途及外形和Data控件相似,但是通过Microsoft ActiveX数据对象(ADO)来建立对数据源的连接。ADO数据控件通过属性实现了对数据源的连接。,ADO数据控件(ADODC),添加ADODC(ADO数据控件)控件:“工程”菜单(或鼠标右击控件箱)-“部件”“Microsoft ADO Data Control 6.0” ADODC控件常用属性和方法: Connec
7、tionString属性 RecordSource属性 RecordSet对象 Refresh方法,如何添加ADODC和DataGrid控件,如何添加ADODC和DataGrid控件,ADODC,Data,DataGrid,如何添加ADODC和DataGrid控件,ADODC,DataGrid,ADO数据控件(ADODC),1ConnectionString属性 ConnectionString属性包含了用于与数据源建立连接的相关信息。创建连接时,可以采用下列源之一:一个连接字符串,一个文件(MDL),一个ODBC数据源名称(DSN)。 2RecordSource属性 RecordSource
8、确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,也可以是使用SQL语言的一个查询字符串。,ADO数据控件(ADODC),3. Refresh方法如果在设计状态没有为打开数据库控件的有关属性全部赋值,或当RecordSource在运行时被改变后,必须使用激活数据控件的Refresh方法激活这些变化。例如:ADODC1.RecordSource = “Titles“ADODC1.Refresh,ADO数据控件(ADODC),几个相关事件: WillMove 将移动当前记录时发生 MoveComplete 当前记录发生移动后发生 WillChange
9、Record 将修改记录内容时发生 RecordChangeComplet 修改记录内容后发生,设置数据源ConnectionString属性,设置数据源ConnectionString属性,设置数据源ConnectionString属性,设置数据记录源RecordSource属性,2.记录集对象(RecordSet),Recordset对象的常用属性与方法: Open, Close AddNew Delete Update MoveXXXX Bof, Eof RecordCount,2.记录集对象(RecordSet),Open和Close方法(一般不需要显式使用)打开和关闭指定的数据库记录
10、集,并分配或释放资源。 格式为: MyData.Open MyData.Close,2.记录集对象(RecordSet),BOF:用来测试记录指针是否超过文件头。 EOF:用来测试记录指针是否超过文件头。 RecordCount属性:指出Recordset对象中当前记录总数。Bof记录1记录2 RecordCountEof,2.记录集对象(RecordSet),Move方法使用Move方法可以遍历记录集中的记录。MoveFirst,MoveLast:移至第一个或最后一个记录。MoveNext,MovePrevious:移至下一个或上一个记录。Move n :向前或向后移n个记录。,2.记录集对
11、象(RecordSet),AddNew方法:向数据表中添加新记录。 Update方法:数据更新 Delete方法:删除数据表中当前记录。 首先,将要删除的记录定位为当前记录; 然后,调用Delete方法; 最后,移动记录指针,确定所做删除操作。,如何从记录集对象(RecordSet)取得当前记录各个字段的数据?,Text1.Text=ADODC1.RecordSet(“歌名”) Text2.Text=ADODC1.RecordSet(“歌词”),字段名,如何添加新纪录?,ADODC1.RecordSet.AddNew ADODC1.RecordSet(“歌名”)=“” ADODC1.Recor
12、dSet(“歌词”)=“” ADODC1.Update,如何修改当前纪录?,ADODC1.RecordSet(“歌名”)=“” ADODC1.RecordSet(“歌词”)=“” ADODC1.Update,如何删除当前纪录?,ADODC1.RecordSet.Delete ADODC1.RecordSet.MoveNext If ADODC1.RecordSet.EOF thenADODC1.RecordSet.MoveLast End If思考一下:删除一个记录为什么这么复杂?P310,2.记录集对象(RecordSet),练习: 记录改变时,将新记录的图片显示出来 数据库:商品管理库 数
13、据表:商品表 字段:spbm:商品编码 文本类型 10spmc:商品名称 文本类型 20spdj: 单价 货币类型sptp: 图片文件名 文本类型 40,3. 使用数据表格控件(DataGrid),添加DataGrid控件:“工程”菜单(或鼠标右击控件箱)-“部件”“Microsoft DataGrid Control 6.0” DataGrid控件常用属性: DataSource:设置数据来源 AllowAddNew:是否允许加新纪录 AllowDelete:是否允许删除纪录 AllowUpdate:是否允许更新(修改)纪录,3. 使用数据表格控件(DataGrid),使用DataGrid控
14、件几乎不用编写代码就可直接将数据库的记录显示在网格内。 当把DataGrid控件的DataSource属性设置为一个Adodc控件时,DataGrid控件会被自动地填充浏览数据表的查询结果。,3. 使用数据表格控件(DataGrid),放置相应的ADODC和DataGrid控件 设置ADODC控件 ConnectionString属性连接到数据源 RecordSource属性连接到数据表或SQL查询语句 将DataGrid控件的DataSource属性设置为ADODC控件名。 在相应位置编写对RecordSet对象的数据记录操作。 运行程序,ADO访问数据库步骤总结:,通用的SQL语言,最早于
15、1974年提出,当时称为SEQUEL语言,后来被国际标准化组织ISO采纳为国际标准,现在大多数数据库管理系统都支持SQL语言。 SQL是一种处理数据的高级语言,是非过程化语言,在查询数据时,只需指出“要什么”,而不需指出如何实现的过程。 SQL语言包括数据定义、查询、操纵和控制功能。 SQL语言的语法格式简单,使用方便灵活。,三SQL语言,数据查询语句(SELECT),SELECT语句从一个或多个表中检索数据。 简单格式如下: SELECT FROM WHERE ORDER BY ASC或DESC,数据查询语句(SELECT),SELECT 歌名,时间歌词 From 歌词表 SELECT 歌名
16、,时间歌词 From 歌词表 Where 歌名=“那一天” SELECT 歌名,时间歌词 From 歌词表 Order By 时间歌词 SELECT * From 歌词表FROM字句是必须的!,数据查询语句(SELECT),数据操纵语句,INSERT语句将一个或多个元组放入一个关系中。 UPDATE语句改变一个关系中的一个元组或多个元组的数据。 DELETE语句从一个关系中删除一个或多个元组。,数据定义语句,CREATE TABLE语句定义一个新表(关系)的结构。 CREATE INDEX语句为表建立索引。 CERATE VIEW语句由一个表或多个表定义一个逻辑表(虚表)。DROP TABLE,DROP INDEX,DROP VIEW语句删除表、索引、逻辑表。,数据控制语句, GRANT语句将一种或多种特权授予一个或多个用户。 REVOKE语句从一个或多个用户收回特权。 COMMIT语句提交一个事务。 ROLLBACK语句撤消一个事务。,