《程序设计项目化教程项目 ADO数据库访问技术的应用.pptx》由会员分享,可在线阅读,更多相关《程序设计项目化教程项目 ADO数据库访问技术的应用.pptx(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、项目十四:ADO数据库访问技术的应用项目主要知识点:1关于ADO2ADODC控件3数据绑定控件4在Visual Basic中使用ADO对象项目实施步骤:阅读基础知识实例操作完成思考与练习题第1页/共56页14.1 基础知识概述14.1.1关于ADO1.ADO主要功能与特性ADO(ActiveX Data Object,Active 数据对象)是基于OLE DB技术而设计的。是Microsoft提供的一种面向对象,与语言无关的基于应用程序层的数据访问接口。它是DAO/RDO的后继产物。它主要特性:易于使用、可以访问多种数据源、访问速度快且效率高、易于Web应用、技术编程接口丰富、低内存支出和占用
2、磁盘空间较少。ADO访问数据是通过OLE DB来实现的,OLE DB不仅能够以SQL Server、Oracle、Access等数据库文件为访问对象,还可对Excel表格、文本文件、图形文件、电子邮件等各种各样的数据通过统一的接口进行存取。ADO与OLE DB的关系如图14-1所示:第2页/共56页14.1 基础知识概述图 14-1 ADO与OLE DB的关系图 14-1 ADO与OLE DB的关系第3页/共56页14.1 基础知识概述2ADO对象模型ADO集中了DAO和RDO的优点,且不像DAO和RDO那样依赖于对象层次。ADO对象模型定义了一个可编程的分层对象集合,ADO模型主要由七个对象
3、成员Connection(连接)、Command(命令)、RecordSet(记录集)、Error(错误)、Parameter(参数)、Field(字段)和Property(属性)以及四个集合对象Errors、Parameters、Fields、Properties所组成。每个 Connection、Command、Recordset和Field对象都有Properties集合。它们之间的关系如图14-2所示:网图 14-2 ADO对象模型关系图 14-2 ADO对象模型关系第4页/共56页14.1 基础知识概述(1)Connection 对象用于管理与数据库的连接,通过连接可从应用程序访问数
4、据源,包括打开和关闭连接以及运行SQL命令等,它保存诸如指针类型、连接字符串、查询超时、连接超时和缺省数据库这样的连接信息。它包含了关于目标数据库数据提供程序的相关信息。(2)Command 对象包含关于某个命令,例如查询字符串、参数定义等的信息。(3)Recordset对象用来存储数据操作返回的记录集。Recordset对象只代表一个记录集,这个记录集可以是一个数据库中的表,或者是Command对象的执行结果返回的记录集。在ADO对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的。Recordset对象用于指定行、移动行、添加、更改、删
5、除记录。第5页/共56页14.1 基础知识概述(4)Field 对象Field 对象对应于数据库表的字段或SQL查询语句Select关键字之后跟随着的域,宽限包含记录集中数据的某单个列的信息。(5)Error对象包含数据提供程序出错时的扩展信息。(6)Parameter 对象Parameter 对象用于管理基于参数化查询或存储过程的Command对象相关联的某个参数或自变量的信息,这类Command对象有一个包含其所有Parameter 对象的 Parameters 集合。(7)Property对象包含某个 ADO 对象的提供程序定义的特征。掌握其中的Command、Connection、Re
6、cordset对象就可以实现基本的数据库操作。第6页/共56页14.1.2 ADO的编程模型ADO编程模型描述了使用ADO对象进行编程所必须的几个重要步骤:1.连接数据源利用Connection对象的Open方法可以创建一个数据源的连接。语法:Connection对象.Open ConnectionString,UserID,PassWord,OpenOptions其中:Connection对象为定义的Connection对象的实例;ConnectionString为可选项,包含了连接的数据库的信息;UserID 可选项,包含建立连接的用户名;PassWord为可选项,包含建立连接的用户密码;
7、第7页/共56页14.1.2 ADO的编程模型2.打开记录集对象(1)方法一:语法:Recordset.Open Source,ActiveConnection,CursorType,LockType,Options 其中:Recordset为所定义的记录集对象的实例。Source可选项,指明了所打开的记录源信息。ActiveConnection可选项,合法的已打开的Connection对象的变量名或者是包含ConnectionString参数的字符串。CursorType可选项,确定打开记录集对象使用的指针类型。LockType可选项,确定打开记录集对象使用的锁定类型。第8页/共56页14.
8、1.2 ADO的编程模型(2)方法二:语法:Set Recordset=Connection.Execute_ (CommandText,RecordsAffected,Options)其中:CommandText 一个字符串,返回要执行的SQL命令、表名、存储过程或指定文本。RecordsAffected 可选项,Long类型值,返回操作影响的记录数。Options 可选项,Long类型值,指明如何处理CommandText参数。打开Recordset对象之后,我们就可以使用它的addnew、delete、update、movenext、find等方法了。第9页/共56页14.1.2 ADO
9、的编程模型3.添加记录添加新记录的AddNew方法语法:Recordset.AddNew Fields,Values 其中:Recordset为记录集对象实例 Fields为一个字段名,或者是一个字段数组。Values为给要加信息的字段赋的值,如果Fileds为一个字段名,那么Values应为一个单个的数值。假如Fileds为一个字段数组,那么Values必须也为一个个数,类型与Fields相同的数组。使用AddNew方法为记录集添加新的记录后,应使用UpDate将所添加的的数据存储在数据库中。第10页/共56页14.1.2 ADO的编程模型4.修改记录集 用SQL语句将要修改的字段的一个数据
10、找出来重新赋值。5.删除记录的Delete方法 语法:Recordset.Delete AffectRecords其中:AffectRecords参数是确定Delete方法作用的方式的。它的取值如下:adAffectCurrent 只删除当前的记录。adAffectGroup 删除符合Filter属性设置的那些记录。为了一次能删除一组数据,应设置Filter属性。6.查询记录(1)方法一:使用连接对象的Execute方法执行SQL命令,返回查询记录集。(2)方法二:使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集。第11页/共56页14
11、.1.2 ADO的编程模型7.断开连接 在应用程序结束之前,应该释放分配给ADO对象的资源,操作系统回收这些资源并可以再分配给其他应用程序.使用的方法为:Close方法。语法:ADO对象.Close 第12页/共56页 14.2 ADODC控件 14.2.1 ADODC控件在VB中,使用ADO访问数据库主要有两种方式,一种是使用ADO数据控件,通过对控件的绑定来访问数据库中的数据,即非编程访问方式;另一种是使用ADO对象模型,通过定义对象和编写代码来实现对数据的访问,即编程访问方式,以下我们先介绍使用ADODC控件对数据库进行访问。1ADODC控件几个重要的与数据库有关的属性,如表14-1所示
12、:第13页/共56页 14.2 ADODC控件 表 14-1 ADO控件属性CommandType指示命令类型。取值为:1 adCmdText SQL 语句2 adCmdTable 表4 adCmdStoredProc存储过程8 adCmdUnknown 其他类型ConnectionString支持连接字符串的OLEDB提供程序(打开属性页-通用)。ConnectionTimeou在中止前等待打开连接的时间量(单位秒)。CursorLocation决定时使用服务器端游标还是客户端游标(使用哪个游标引擎)。取值为:2 adUseServer3 adUseClientCursorType设置用于下
13、一级Recordset的游标类型。取值为:1 adOpenKeyset2 adOpenDynamic3 adOpenStaticPassword密码-支持密码的OLEDB提供程序。(打开属性页-身份验证)RecordSourceRecordset源(adCommandText=SQL或者其它命令语法,adCommandTable=表名称。)(打开属性页-记录源)UserName用户名称-支持用户名称的OLEDB提供程序第14页/共56页 14.2 ADODC控件 2ADODC控件常用的方法(1)Refresh方法。该方法用于刷新与ADODC控件连接的记录集数据。(2)UpDateRecord方
14、法通过此方法可以将数据绑定控件上的当前内容写入到数据库。(3)Close方法Close方法主要用于关闭打开的对象及相关对象。3ADODC控件的事件ADODC控件的事件分为两种类型即:Will事件和Complete事件。其中Will事件是在操作开始之前调用,这时可能检查或修改操作参数,并且可以决定是取消操作还是允许完成操作。而Complete事件是在操作完成之后调用。第15页/共56页 14.2 ADODC控件(1)WillMove事件WillMove事件在执行更改Recordset中的当前记录操作之前调用。而MoveComplete事件则是在执行更改Recordset中的当前记录操作之后被调用
15、。执行Recordset.Open、Recordset.MoveNext、Recordset.Move、Recordset.MoveLast、Recordset.MoveFirst、Recordset.MovePrevious、Recordset.Bookmark、Recordset.AddNew、Recordset.Delete、Recordset.Requery等方法时触发。第16页/共56页 14.2 ADODC控件(2)WillChangField事件和FieldChangComplete事件 WillChangeField 在Recordset对象中Field属性值更改之前调用。而F
16、ieldChangeComplete 在Recordset对象中Field属性值更改之后调用。执行Recordset.Update、Recordset.Delete、Recordset.CancelUpdate、Recordset.UpdateBatch、Recordset.CancelBatch 等方法时触发。(3)WillChangRecordSet事件 WillChangRecordSet发生在对Recordset对象进行操作之前,而RecordSetChangComplete发生对Recordset对象进行操作之后。第17页/共56页14.2.2 数据绑定控件1数据绑定简述ADODC控
17、件只能连接数据库,产生记录集。但不能显示记录集中的数据,要显示记录集中的数据必须通过能与它绑定的控件来实现。数据库记录集数据绑定图 14-3 数据绑定与数据库和记录集关系图 14-3 数据绑定与数据库和记录集关系第18页/共56页14.2.2 数据绑定控件数据绑定控件具有DataSource、DataField属性的控件均可作为绑定控件(2)常用绑定控件ComBox,Label,TextBox等控件是较为常用的数据绑定控件。第19页/共56页14.2.2 数据绑定控件(3)专门与ADO控件绑定的ActiveX控件DataList 数据列表控件我们在下一节将专门介绍ADO控件与DataList控
18、件结合显示数据。DataGrid 数据网格控件我们在下一节将专门介绍ADO控件与DataGrid控件结合显示数据。DataCombo 数据组合控件(4)高级数据绑定控件Mi crosoft Hierarchical FlexGfid 分层式网格控件Microsoft Chart 图表控件以上控件中数据网格控件和图表控件可以绑定到整个记录集,而其他控件只能绑定到记录集的某一个字段。第20页/共56页14.2.2 数据绑定控件2数据绑定方法(1)添加控件首先添加ADODC控件及绑定控件添加到窗体上。(2)设置ADODC控件属性设置ADODC控件的ConnectionString,RecordSou
19、rce,Password,UserName属性,连接数据库。(3)设置绑定控件的DataSource属性将绑定控件的DataSource属性设为ADODC控件的名称。(4)设置绑定控件的DateField属性将绑定控件的DateField属性设为要显示的字段名称。完成上述步骤后,即可通过绑定控件将数据显示。第21页/共56页14.3在Visual Basic中使用ADO对象14.3.1非编程访问方式我们以SQL Server 2000数据库为例。使用ADODC控件,快速创建数据绑定控件和数据提供者之间的连接。其中数据绑定控件可以是任何具有DataSource属性的控件;数据提供者可以是任何符合
20、OLE DB规范的数据源。第22页/共56页14.3.1非编程访问方式ADODC控件和DataList控件应用实例(1)建立login数据库首先启动SQL Server 2000企业管理器,建立一个login的数据库,在 login数据库中建立“用户信息”数据表,如图14-4所示:图 14-4 SQL Server 2000企业管理器建立数据库和数据表第23页/共56页14.3.1非编程访问方式(2)添加ADODC控件ADODC 控件是ActiveX控件,在使用前必须先将其添加到工具箱中。方法是:单击“工程”“部件”菜单选项,选中“Microsoft ADO Data Control 6.0(
21、OLE DB)”后,按“确定”,此时ADO数据控件便出现在工具箱中,如图14-5所示:图 14-5 14-5 添加ADODCADODC控件第24页/共56页14.3.1非编程访问方式(3)设置ADODC连接属性将ADODC控件添加到窗体上,其默认的名称属性为“Adodc1”。右击ADODC 控件,选“ADODC属性”,弹出“属性页”对话框,如图14-6所示:图 14-6 设置ADODC控件ConnectionString属性第25页/共56页点击 弹出属性页面,选择“通用”,选中“使用连接字符串”(也可以选择“ODBC数据源名称”),再单击“生成”按钮,弹出“数据链接属性”对话框。选择“提供程
22、序”选项卡,在列表中选择“Microsoft OLE DB Provider For SQL SERVER”选项,如图14-7所示,再单击“下一步”按钮。图 14-7 选择OLE DB提供程序14.3.1非编程访问方式非编程访问方式第26页/共56页14.3.1非编程访问方式指定服务器的名称和登录信息并选择本连接要使用的数据库文件。单击“测试连接”按钮以确定连接是否正常。若得到测试成功的消息,单击“确定”按钮以继续,如图14-8所示。服务器名称:机器名实例名图 14-8 设置数据连接属性第27页/共56页14.3.1非编程访问方式(4)设置AD0DC数据源属性在“属性页”对话框中选择“记录源”
23、选项卡,在命令类型下拉列表中选择“2-adCmdTable”选项,在表或存储过程名称下拉列表中选择数据表“用户信息”。(若选择的命令类型为“1-adCmdText”,则可在命令文本框中输入SQL查询语句,SELECT*from 用户信息),然后单击“确定”按钮,如图14-9所示:图 14-9 设置记录源第28页/共56页14.3.1非编程访问方式(5)在窗体上添加数据绑定控件我们使用DataList数据绑定控件。DataList 控件是ActiveX控件,在使用前必须先将其添加到工具箱中。方法是:单击“工程”“部件”菜单选项,选中“Microsoft DataList Control 6.0(
24、SP3)”后,按“确定”,此时DataList控件便出现在工具箱中。图 14-9 将添加DataLIst控件添加到工具箱第29页/共56页14.3.1非编程访问方式(6)设置DataList属性 将DataList与ADODC1进行绑定,如图14-10所示:图 14-10 设置DataList属性第30页/共56页14.3.1非编程访问方式(7)运行程序将数据表信息通过绑定控件DataList显示,如图14-11所示:图 14-11 在DataList控件中显示用户名第31页/共56页14.3.1非编程访问方式2ADODC控件和DataGrid控件应用实例(1)建立login数据库首先启动SQ
25、L Server 2000企业管理器,建立一个login的数据库,在login数据库中建立“用户信息”数据表。(2)添加ADODC控件并设置属性方法同ADODC控件和DataList控件应用实例,不再详细介绍。(3)添加DataGrid控件在窗体上添加ADO专用绑定控件DataGrid控件。DataGrid控件是ActiveX控件,在使用前必须先将其添加到工具箱中。方法是:单击“工程”“部件”菜单选项,选中“Microsoft DataGrid Control 6.0(SP6)”后,按“确定”,此时DataList控件便出现在工具箱中,如图14-12所示:图 14-12 添加DataGrid控
26、件第32页/共56页14.3.1非编程访问方式设置DataGrid属性DataGrid控件DataSource属性如图14-13所示:图 14-13 设置DataGrid的DataSource属性第33页/共56页14.3.1非编程访问方式进行数据绑定数据:右键单击DataGrid控件,选择“检索字段”,进行数据绑定,也可以选择“属性DataField”进行绑定。(4)运行程序运行程序后,将数据表的信息通过数据绑定控件DataGrid显示出来,如图14-14所示:图 14-14 在DataGrid控件中显示数据表“用户信息”第34页/共56页14.3.1非编程访问方式通过ADODC控件与Dat
27、aList控件及ADODC控件与DataGrid控件结合,可实现SQL Server数据库login中“用户信息”表中数据的浏览功能。ADODC控件还可以和TextBox控件、DataCombo控件结合,显示数据表数据。第35页/共56页14.3.1编程访问方式编程访问方式是使用ADO 对象模型访问数据库。为了能够在程序中使用ADO对象编程,在连接数据库前,需要在Visual Basic 6.0菜单“工程”“引用”中选择Microsoft ActiveX Data Objects 2.8 Library组件。运用ADO对象模型的主要元素:Connection(连接)中的ConnectionSt
28、ring属性进行连接,ConnectionString为可读写string类型,指定一个连接字符串,告诉ADO如何连接数据库。第36页/共56页14.3.1编程访问方式1定义ADO对象用于设置打开连接和产生记录集(1)声明语句如下:Dim conn As New ADODB.Connection 定义连接对象 Dim rs As New ADODB.Recordset 定义记录集对象(2)创建对象实例定义ADO对象实例,声明了对象以后,还需要创建对象实例,否则不能使用。以下是两条重要语句:Set conn=New ADODB.Connection 创建conn对象Set rs=New ADOD
29、B.Recordset 创建rs对象第37页/共56页14.3.1编程访问方式2数据库连接设置Connection对象实例ConnectionString属性连接到数据库。有两种方法:有源数据库连接和无源数据库连接(1)有源数据库连接有源数据库连接首要任务是要注册数据源名称(DSN),通过配置ODBC环境,进行数据源的注册,然后才能对数据源进行连接、访问和操作。以连接数据源login为实例进行操作:第38页/共56页14.3.1编程访问方式启动ODBC在Windows XP点击“开始”“控件面板”“性能和维护”管理工具,出现如下界面:图 14-15 ODBC界面第39页/共56页14.3.1编
30、程访问方式添加“用户DSN”双击“数据源(ODBC)”,出现如下界面,选择“用户DSN”,点击“添加”,如图14-16所示:图 14-16 添加用DSN第40页/共56页14.3.1编程访问方式选择数据源的驱动程序数据源驱动程序选择“SQL Server”,如图14-17所示:图 14-17 选择数据源的驱动程序第41页/共56页14.3.1编程访问方式数据源命名给数据源命名为Login,如图14-18所示:服务器名称:机器名实例名图 14-18 给数据源命名第42页/共56页14.3.1编程访问方式注:服务器名根据实际情况填写:机器名实例名测试数据源:图 14-19 数据源测试第43页/共5
31、6页14.3.1编程访问方式(2)无源数据库连接与有源数据库连接的区别在于不需要配置ODBC,不使用DSN。提供连接所需要的特定信息包括服务器名称:“机器名实例名”用户名:“sa”口令可为空与数据库“login”建立的连接代码如下:conn.ConnectionString=driver=sql server;_server=机器名实例名;Uer Id=sa;pwd=;Database=login打开连接对象设置好连接属性后,就可以打开连接对象了。代码如下:conn.Open这样,VB和后台SQL Server数据库的连接就创建好了。第44页/共56页14.3.3实例操作1有源数据库连接(1)
32、创建“标准EXE”工程,工程命名为login(2)引用“Microsoft ActiveX Data Object 2.0 Library”(3)创建模块文件选择“工程”“添加模块”,在模块中输入代码:Public conn As New ADODB.Connection 标记新连接对象Public rs As ADODB.Recordset 标记新记录集对象第45页/共56页14.3.3实例操作(4)创建登录窗体界面选择“工程”“添加窗体”,在VB窗体中添加两个标签控件、两个文件框控件和一个命令按钮控件,窗体界面如图14-20:图 14-20 登录窗体界面第46页/共56页14.3.3实例操
33、作有源数据库连接主要代码Dim conn As New ADODB.Connection 定义连接对象Dim rs As ADODB.Recordset 定义记录集对象窗体加载代码:Private Sub Form_Load()Set conn=New ADODB.Connection 设置conn实例对象Set rs=New ADODB.Recordset 设置rs实例对象conn.ConnectionString=DSN=login;User_ ID=sa;Password=;database=login;conn.ConnectionTimeout=30conn.OpenEnd Sub第
34、47页/共56页14.3.3实例操作其中有源数据库连接:DSN数据源是“Login”用户名是“sa”口令为空与数据库“login”建立的连接代码:conn.ConnectionString=DSN=Login;User ID=sa;PWD=;database=login;命令按钮代码:Private Sub Command1_Click()rs.Open select*from 用户信息 where 用户名=&Text1.Text&_and 密码=&Text2.Text&,conn,adOpenstate,adLockOptimistic,_ adCmdText第48页/共56页14.3.3实
35、例操作If rs.EOF=True ThenMsgBox 请重新输入学号或密码!Text1.Text=Text2.Text=Text1.SetFocusElseMsgBox 登录成功End Ifrs.CloseUnload MeEnd Sub第49页/共56页14.3.3实例操作(6)程序运行程序运行后,用户名与密码输入正确后,登录成功,如图14-21所示:图 14-21 登录成功界面第50页/共56页14.3.3实例操作2.无源数据库连接与有源数据库连接不同的是无DSN,无源数据库连接代码:conn.ConnectionString=“Provider=SQLOLEDB.1;Persist
36、Security_ Info=False;Server=机器名实例名;_ User ID=sa;Password=;DataBase=login“(1)窗体加载主要代码为:Private Sub Form_Load()Set conn=New ADODB.Connection Set rs=New ADODB.Recordsetconn.ConnectionString=Provider=SQLOLEDB.1;Persist Security_Info=False;Server=机器名实例名;User ID=sa;_Password=;DataBase=login;conn.Connectio
37、nTimeout=30conn.OpenEnd Sub(2)其它代码与有源数据库连接相同第51页/共56页14.4结束语14.4.1 ADO数据控件和ADO对象模型比较1连接数据库比较ADO数据控件和ADO对象模型都为我们提供了数据库访问的接口技术,使用ADO控件在建立连接、选择数据表时,不需要创建连接对象和记录集对象,ADO控件几乎封装了相应代码的所有功能,只需设置好与之相关的属性、方法和事件,操作简单。使用ADO对象模型,通过定义对象、编写代码来实现数据库的访问,能很好地控制各种操作,具备更多的灵活性和更强大的功能。第52页/共56页14.4结束语2.应用领域比较ADO控件虽然操作简单,但
38、灵活性较差,不利于对大型数据库访问,一个ADO控件只能在同一数据源上打开一个记录集,在一个应用中若涉及多个记录集,则需要建立多个ADO控件。而使用ADO对象模型,便于实现对象重用、封装等技术,也利于事件处理,提高数据操作效率,特别是对海量数据的处理。在开发应用程序时,应根据数据库应用程序的特点来选择具体的访问方式。第53页/共56页14.5思考题与练习题14.5.1 思考题1如何实现ADODC控件与DataCombo控件结合2如何实现ADODC控件与TextBox控件结合3编程访问数据库中如何理解无源数据库连接第54页/共56页14.5.2 练习题1设计学生信息窗体。使用TextBox绑定控件,窗体上添加4个标签控件,4个文本框控件,一个ADODC控件,如图14-22所示:图 14-22 ADODC控件与TextBox绑定控件结合显示数据第55页/共56页感谢您的观看!第56页/共56页