1.18k likes | 1.34k Views
第 7 章 ASP 访问数据库. 7.1 数据库简介 7.2 ADO 访问数据库 7.3 数据库连接 7.4 数据库操作. 学习目标. 介绍了 ASP 的数据库相关操作,包括 ADO 数据库开发原理、数据库连接、 Command 对象和 RecordSet 对象等数据库开发技术基础,使读者能够灵活运用这些基本技术开发实用信息系统,实现以下目标。 了解 ADO 对象模型 掌握 OLEDB 和 ODBC 连接数据库的方法 掌握使用 Connection 对象连接数据库 掌握 RecordSet 对象显示、修改和删除数据的方法
E N D
第7章 ASP访问数据库 7.1 数据库简介 7.2 ADO访问数据库 7.3 数据库连接 7.4 数据库操作
学习目标 • 介绍了ASP的数据库相关操作,包括ADO数据库开发原理、数据库连接、Command对象和RecordSet对象等数据库开发技术基础,使读者能够灵活运用这些基本技术开发实用信息系统,实现以下目标。 • 了解ADO对象模型 • 掌握OLEDB和ODBC连接数据库的方法 • 掌握使用Connection对象连接数据库 • 掌握RecordSet对象显示、修改和删除数据的方法 • 掌握Command对象的使用
7.1 数据库简介 • 数据库(Database)是指长期存储在计算机内的,有组织的,可共享的、可以表现为多种形式的数据集合。它的产生距今有六十年了。随着信息技术的发展,特别是二十世纪九十年代后,数据管理不再仅仅是存储和管理数据,已经转变成为了用户所需要的各种数据管理的方式。数据库系统都在各行各业都得到了广泛的应用。
7.1.1 数据库技术的基本概念 • 数据 • 数据是指人们用来反映客观世界而记录下来的可以鉴别的数字、字母或符号,可以存储在某一种媒体上被识别。 • 数据的概念包含两层意思: • 一是描述事物特性的数据内容,也就是我们常说的信息, • 二是存储在某一种媒体上的数据形式,即符号。 • 数据处理 • 数据处理是指对数据的采集、存储、检索、加工、变换和传输的过程。 • 数据处理的基本目的是从大量的、可能是杂乱无章的、难以理解的数据中抽取并推导出对于某些特定的人们来说是有价值、有意义的数据。数据处理贯穿于社会生产和社会生活的各个领域。数据处理技术的发展及其应用的广度和深度,极大地影响着人类社会发展的进程。
数据库(DB) 数据库(DataBase,简称DB),是指长期存储在计算机内的,有组织的,可共享的、可以表现为多种形式的数据集合。数据库能为各种用户共享,具有较小冗余度、数据间联系紧密而又有较高的数据独立性。 数据库管理系统(DBMS) 数据库管理系统(DataBase Management System,简称DBMS)是位于用户与操作系统(OS)之间的一层数据管理软件。正如使用高级语言需要解释/编译程序的支持一样,使用数据库语言也需要一个特定的支持软件,这就是"数据库管理系统"。DBMS能为用户或应用程序提供访问数据库的方法,包括数据库的建立、查询、更新及各种数据控制等。 DBMS的主要功能包括: (1)数据定义功能 (2)数据操纵功能 (3)数据库运行控制功能 (4)数据库的建立和维护功能
数据库系统(DBS) • 数据库系统(DataBase System,简称DBS)是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬软件和数据资源组成的系统,即采用数据库技术的计算机系统。DBS一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。 • 与文件系统相比,DBS包含如下特点: (1)数据的结构化。 (2)最小的冗余度。 (3)数据的共享。 (4)数据与程序独立。 (5)数据的安全性和完整性。 • 数据模型 • 数据模型是指能表示实体类型及实体间联系的模型。 • 目前有两种数据模型被广泛使用。 • 一种是概念数据模型,概念数据模型是指独立于计算机系统的数据模型,它完全不涉及信息在计算机中的表示,只是用来描述某个特定组织所关心的信息结构。 • 另一种是逻辑数据模型,逻辑数据模型是直接面向数据库的逻辑结构,它是对现实世界的第二层抽象。
7.1.2 数据库技术的发展简史 • 人工管理 • 文件管理 • 数据库管理 • 在该阶段,用户把数据集中存放在一个或多个数据库中,然后通过数据库管理系统来使用数据库中的数据。 • 这是目前最为流行的数据管理方式。
7.1.3 数据库系统的组成 数据库应用系统 用户 数据库管理系统 数据库管理员 操作系统 硬件 • 数据库系统是指采用数据库技术的计算机系统。数据库系统一般由支持数据库运行的软硬件、数据库、数据库管理系统、数据库管理员和用户等部分组成的,如图7-4所示。数据库应用系统数据库管理系统操作系统硬件数据库管理员用户
7.1.4 数据库系统的体系结构 • Client/Server结构 • 客户机/服务器(Client/Server,简称C/S)模式也称C/S结构,是20世纪80年代末才逐步发展起来的一种模式。 • C/S结构的关键在于功能的分布,即一部分功能在客户机上运行,而将另一部分功能则在服务器上运行。这种功能的分布的模式解决了计算机系统的各种瓶颈问题。 • C/S结构中,服务器数据库通常采用采用大型数据库系统,如ORACLE、SYBASE、InfORMix或 SQL Server等。但客户端必须安装专用的客户端软件。 • Browser/Server结构 • 浏览器/服务器(Browser/Server,简称B/S)模式也称B/S结构。是随着Internet技术的兴起逐步发展起来的一种模式,是对C/S模式应用的一种扩展。在这种结构下,客户端无需安装专用的客户端软件,只需安装IE浏览器即可。B/S模式最大优点就是运行和维护都比较简单,能使得不同的人员,在不同地点,以不同的接入方式访问和操作共同的数据。 • 其最大缺点就是对企业外网环境要求较强,只要企业外网中断就会造成系统瘫痪。
7.1.5常见数据库管理系统 • 大中型关系型数据库管理系统有SQL Server、IBM DB2、Oracle、SyBase、Informix等 • 常用的小型数据库管理系统有Access、Pradox、Foxpro等。 • 在ASP中一般使用SQL Server或Access数据库。 • 本章主要使用Access。
Access数据库系统简介 • Access是在Windows操作系统下工作的关系型数据库管理系统。它采用了Windows程序设计理念,以Windows特有的技术设计查询、用户界面、报表等数据对象,内嵌了VBA(全称为Visual Basic Application)程序设计语言,具有集成的开发环境。Access提供图形化的查询工具和屏幕、报表生成器,用户建立复杂的报表、界面无需编程和了解SQL语言,它会自动生成SQL代码。 • Access被集成到Office中,具有Office系列软件的一般特点,如菜单、工具栏等。与其他数据库管理系统软件相比,更加简单易学,一个普通的计算机用户,没有程序语言基础,仍然可以快速地掌握和使用它。最重要的一点是,Access的功能比较强大,足以应付一般的数据管理及处理需要,适用于中小型企业数据管理的需求。 • 当然,在数据定义、数据安全可靠、数据有效控制等方面,它比前面几种数据库产品要逊色不少。
1.数据库的基本术语 字段、记录、值、表、数据库、数据模型
2. 建立Access数据库 • 规划自己的数据库 • 新建数据库 • 新建和维护表 • 新建和维护查询
(1) 规划自己的数据库 • 要开发数据库程序,首先要规划自己的数据库,要尽量使数据库设计合理。 • 主要是规划每一个表的字段和字段类型,不要有冗余。
(2) 新建数据库 • 依次选择菜单命令【开始】→【所有程序】→【Microsoft Office】→【Microsoft Office Access 2007】就可以启动Access 2007,然后在出现的主窗口中依次选择【文件】→【新建】菜单命令。 空数据库
(3) 新建和维护表 • 新建表 • 在上图双击【使用设计器创建表】选项,就可以打开新建表的设计视图。 主键
新建和维护表(2) • 保存表 • 正确输入所有字段以后,单击Access主窗口中的【保确定】按钮 即可。
新建和维护表(3) • 在表中输入数据 • 在主窗口中双击表名,就可以打开输入窗口 ,然后就可以在其中和普通表格一样输入数据。
新建和维护表(4) • 修改数据表的设计 • 单击【设计】按钮,就可以重新打开设计视图,然后就可以继续删除或添加字段,也可以修改数据类型或格式。
(4) 新建和维护查询 • 查询好比是一张虚拟的表,可以根据需要显示出表中的部分字段或部分记录。 • 利用查询可以更方便地更改、分析、处理数据。 • 其实查询不仅可以用来显示数据,还可以用来插入、删除、更新记录。 • 查询有4种: • 简单查询 • 组合查询 • 计算查询 • 条件查询。
新建简单查询 • 步骤如下: • 在Access主窗口创建—右侧选择【查询设计】按钮 • 然后双击【在设计视图中创建查询】选项
显示查询内容 • 成功新建一个查询后,就可以双击查询的名称,打开查询结果了。
利用SQL语言建立查询 • 在建立查询时, 也可以利用写SQL语言的方式直接建立。 • 当选择“在设计视图中创建查询”后,不必自己添加表,直接单击【关闭】按钮,然后在主窗口中依次选择【视图】→【SQL视图】菜单命令, 此时在打开的SQL视图对话框中,输入查询语句运行即可。
3、 SQL语言简介 • Select语句 • Insert语句 • Delete语句 • Update语句
(1) Select语句 • Select语句主要功能是实现数据库查询,即可以从数据库中查询出符合特定条件的记录(行)或字段(列)。 • 语法如下: • Select [Top 数值] 字段列表 From 表 [Where 条件] [Order By 字段] [Group By 字段]
①简单查询 • 所谓简单查询,指的是不需要使用任何条件,只是简单选取若干字段若干记录。 • 示例如下: • 下面语句可以选取数据表中全部数据 • Select * From tbAddress • 下面语句可以选取数据表中的前10条记录 • Select Top 10 * From tbAddress • 下面语句可以选取指定字段的数据,不过要注意每个字段之间用逗号隔开。 • Select strName,strEmail From tbAddress • 还可以对若干个字段进行加减乘除等适当的运算后再显示,如下面的语句将产生一个新的字段NewAge,它表示用户10年后的年龄。 • Select strName,(intAge+10) As NewAge From tbAddress
②条件查询 • 利用Where 条件子句可以根据条件选取数据。 • 利用比较和逻辑运算符来构造Where 条件子句。 • 实例如下: • 选取2010年11月1日之前注册用户的记录: Select * From tbAddress Where dtmSubmit<#2010-11-1# • 查询所有姓名中有“鹏”字的人: Select * From tbAddress Where strName like '%鹏%' • 查询所有男性或者姓“李”的用户: Select * From tbAddress Where strsex='女' or strname like '李%'
③排序查询 • 利用Order By字句可以将查询结果按某种顺序显示来。 • 如果要按多个字段排序,中间用逗号隔开。排序时,首先参考第一字段的值,当第一字段的值相同时,再参考第二字段的值,依此类推。 • 示例如下: • 下面的语句将查询结果按姓名升序排列: Select * From tbAddress Order By strName ASC • 如果要降序排列,则为: Select * From tbAddress Order By strName DESC • 多字段排序 Select * From tbAddress Order By strName ASC,dtmSubmit DESC
④汇总查询 • 许多时候需要将全部或多条记录进行汇总 后查询结果。 • Select语句中提供Count、Avg、Sum、Max和Min五个聚合函数,分别用来求记录总数目、平均值、和、最大值和最小值。 • 示例如下: • 查询数据表中的记录总数。 Select Count(*) As Total From tbAddress • 查询所有人的平均年龄。 Select Avg(intAge) As Average From tbAddress • 查询所有人的年龄之和。 Select Sum(intAge) As Total From tbAddress • 查询最大的人的年龄。 Select Max(intAge) As MaxAge From tbAddress • 查询最小的人的年龄。 Select Min(intAge) As MinAge From tbAddress
⑤组合查询 • 组合查询就是要从多个表中组合所需数据查询的结果。 • 示例如下: • 有两张表:用户信息表tbUsers 、用户登录表tbLog • 下面就利用组合查询显示用户的真实姓名、登录时间和登录IP Select tbUsers.strName, tbLog.dtmLog, tbLog.strIP From tbUsers, tbLog Where tbUsers.strUserId =tbLog.strUserId
⑥其他查询 • 使用Distinct关键字可以去掉重复的记录。 如: Select Distinct * From tbAddress • 许多时候都可以使用As关键字指定别名,将来只要引用该别名就可以了。 如: Select strName As 姓名, intAge As 年龄 From tbAddress • 在组合查询时也可以使用别名,以便简化书写。 如: Select a.strName,b.dtmLog,b.strIP From tbUsers As a, tbLog As b Where a.strUserId=b.strUserId
(2) Insert语句 • 在ASP程序中,经常需要向数据库中添加数据,例如向用户表tbUesrs中添加新成员的记录。使用Insert语句就可以实现该功能。 • 语法如下: • Insert Into 表(字段1,字段2,…) Values(字段1的值,字段2的值,…)
Insert语句示例 • 只添加strName字段 • Insert Into tbAddress (strName ) Values('萌萌') • 只添加strName和dtmSubmit字段 • Insert Into tbAddress (strName, dtmSubmit ) Values('萌萌',#2012-11-2#) • 只添加strName和intAge字段: • Insert Into tbAddress (strName, intAge) Values('萌萌',16) • 在tbAddress表中增加一条完整的记录 • Insert Into tbaddress (strname,strsex,intage,strtel,stremail,strintro,dtmsubmit) Values ('萌萌','女',21,'6112211','mm@372.net','金融系同学', '2012-8-8')
(3) Delete语句 • 在SQL语言中,可以使用Delete语句来删除表中无用的记录。语法如下: • Delete From表 [Where 条件] • Delete语句示例: • 删除自动编号字段ID等于1的用户。 Delete From tbAddress Where ID=1 • 删除strName为“萌萌”的用户。 Delete From tbAddress Where strName='萌萌‘ • 删除2008年10月1日前注册,且strName为“萌萌”的用户。 Delete From tbAddress Where dtmSubmit<#2012-12-1# And strName='萌萌' • 删除表中所有数据。 Delete From tbAddress
(4) Update语句 • 可以使用Update语句来实现更新数据的功能,语法如下: • Update 数据表名 Set 字段1=字段值1,字段2=字段值2,… [Where 条件] • Update语句示例 : • 更新自动编号ID字段为2的用户的电话 Update tbAddress Set strTel='8282999' Where ID=2 • 更新strName为"萌萌"的用户的电话和年龄 Update tbAddress Set intAge=22,dtmSubmit='2008-9-8' Where strName ='萌萌‘ • 将所有2008年1月1日前注册的用户的注册日期更新为2008年1月1日 Update tbAddress Set dtmSubmit='2008-1-1' Where dtmSubmit<'2008-1-1'
4、设置数据源 • 什么是数据源 • 所谓数据源,就是数据源开放数据库连接(ODBC ),利用它就可以访问来自多种数据库管理系统的数据。 • 比如,如果你有一个访问Access 数据库的程序,数据源 (ODBC) 会允许您用同一个程序访问SQL数据库中的数据。至于具体访问细节你就不用关心,由ODBC来完成。 • 下面以Windows XP为例,为数据库address.mdb中设置数据源。
设置数据源步骤1 • 依次选择【开始】、【设置】、【控制面板】、【管理工具】、【数据源(ODBC)】选项。
设置数据源步骤2 • 选择【系统DSN】,然后单击【添加】按钮 ,出现 “创建新数据源”对话框。
设置数据源步骤3 • 选择“Microsoft Access Driver (*.mdb)”,然后单击【完成】按钮,将出现 “ODBC Microsoft Access 安装”对话框。
设置数据源步骤4 • 在上图中输入【数据源名】为“addr”和【说明】为“通讯录数据库”,并单击【选择】按钮,选择“d:\aspLX\ch7\address.mdb”,然后单击【确定】按钮即可。(数据文件绝对路径) • 添加完毕后,可以看到在【ODBC数据源管理器】对话框中(就出现了该数据源的名称addr。
7.2 ADO访问数据库 • 在ASP中内置了许多功能强大的ActiveX 服务器组件,利用这些组件就可以方便地完成数据库存取、文件存取等功能。 • ASP内置组件基本功能 :
7.2 ADO访问数据库 • 数据库存取组件(Database Access Component)是使用ADO(ActiveX Data Objects)技术来存取符合ODBC(Open DataBASE Connectivity)标准的数据库或具有表格状的数据形式(如Excel文件)的一种ASP内置组件,是所有ASP内置组件中最重要的和最常用的一个组件。 • ADO可通过任何OLE DB提供者访问和操作数据库中数据。
7.2 ADO访问数据库 • ADO模型的主体对象有7个,它们分别是 • Connection对象 • Command对象 • RecordSet对象 • Field对象、Parameter对象、Property对象和Error对象。 • ADO对象模型还包括4个集合 • Field集合、Parameter集合、Property集合和Error集合
7.2 ADO访问数据库 • ADO包括Connection、Command及Recordset三个主要对象 • Connection对象—又称连接对象,主要用来建立与数据库的连接。 • Command对象—又称命令对象,是对数据库执行命令的对象,它可以执行对数据库查询、添加、删除、修改等记录操作。 • Recordset对象—又称记录集对象,用来得到从数据库返回的记录集 。 • Error、Parameter、Field分别是它们的子对象
7.2.1 Connection对象 • Connection对象的功能是连接数据。只有Connection对象才能指定希望使用的OLE DB提供者、连接到数据存储的安全细节以及其他任何连接到数据存储特有的细节。 • 除了为数据存储提供连接以外,Connection对象允许针对数据存储执行命令操作。这些命令可以是结构化的或存储的命令(例如,SQL命令或一个存储过程),并且可以有选择地从数据存储中返回一些数据。 • Connection对象的创建方法如下: Set adocon= Createobject("adodb.connection") 或 Set adocon=Server.Createobject("adodb.connection")
建立Connection对象的方法一般如下: Set Connection对象实例=Server.CreateObject("ADODB.Connection") Connection对象实例.Open 数据库连接字符串 • 在上面的数据库连接字符串中,会用到若干参数,如 • DSN :ODBC数据源名称 • User:数据库登录用户名 • Password:数据库登录密码 • Driver :数据库的驱动程序类型 • Dbq :数据库的物理路径 • Provider: 数据提供者 • Data Source:数据库的物理路径
连接数据库的具体方法 • 常用的数据库连接字符串的形式: (1)基于ODBC数据源的连接方式: "Dsn=address2" (2)基于ODBC数据源的连接方式的省略方式:"address2" (3)基于ODBC但是没有数据源的连接方式 "Driver={Microsoft Access Driver (*.mdb)}; Dbq= d:\ASPLX\ch7\address.mdb“ (4)基于ODBC但是没有数据源的连接方式(使用Server.MapPath转换路径) "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.MapPath("address.mdb") (5)基于OLE DB的连接方式 "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= d:\ASPLX\ch7\address.mdb (6)基于OLE DB的连接方式(使用Server.MapPath转换路径) "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("address.mdb")
Connection对象连接数据库 • 利用Connection对象创建数据库连接的步骤如下: (1) 创建 Connection 对象实例,格式如下: Set conn=Server.CreateOreateObject("ADODB.Connection") (2) 指定连接字符串,不同的数据库系统,其连接字符串有所不同: • 连接Access的连接字符串如下: conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=accessdatabase“ • 其中,accessdatabase为数据库路径。 • 连接SQLserver2000的连接字符串如下: conn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称" (3) 打开数据库连接,格式如下: conn.Open connectionstring,UserID,Password (4) 关闭与数据源的连接,格式如下: conn.Close (5)释放 Connection 对象所占用的所有资源,格式如下: Set conn =nothing 【例7-1】编写一段代码,要求连接指定文件夹下的access数据库”tbaddress.mdb”,然后再关闭该数据库的连接。