《第六章 VB数据库访问技术.ppt》由会员分享,可在线阅读,更多相关《第六章 VB数据库访问技术.ppt(104页珍藏版)》请在三一办公上搜索。
1、第六章 VB数据库访问技术,教学目的:掌握VB数据库访问技术。理解VB语言、SQL语句。将SQL语句“嵌入”到VB语言中,采用ADO数据模型开发数据库应用程序。教学内容:VB数据库访问技术概论 ADO数据对象(ActiveX Data Objects)上机及作业,VB数据库访问技术的概论,VB数据对象及数据库访问机制数据引擎VB中数据库类型在VB中常用的数据库引擎数据库访问方式数据对象补充内容:数据库基本概念创建数据库数据管理器利用“数据窗体向导”快速建立数据访问界面,访问内容:对数据库进行“增删改查”操作,VB数据对象及数据库访问机制数据引擎:,数据库应用程序属于一种非常典型的前后台软件结构
2、前台就是我们用开的VB程序后台则是数据库管理系统(如SQL Server)或数据文件(如Access数据文件)而前后台之间进行通信的主要机制称为数据库引擎,VB中将数据库分为了三种类型:,(1)本地数据库:主要指Microsoft Access数据库。(2)外部数据库:是指采用ISAM(Indexed Sequential Access Method,索引顺序访问方法)的数据库,比发dBase、Foxpro、Paradox和Execle等。(3)远程数据库:指SQL Server、Oracle、DB2等大型数据库,当前的大型数据库应用程序基本上都是以这类数据库为后台。,在VB中常用的数据库引擎
3、有三种,1Jet引擎:联合数据库引擎,是Microsoft公司开的用于本地数据库(比如Access)、外部数据库(比如dBase、Excel、Paradox)的数据库引擎。它也可以访问远程数据库(比如SQL Server、Oracle),但必须通过ODBC来转接。,2ODBC:,开放式数据库连接,是一种建立数据库驱动程序的标准,当前几乎所有的DBMS都支持这种数据库引擎。ODBC是在数据库和应用程序之间提供的一个抽象层,即通过驱动程序和游标库来和数据库进行通信。这样,通过ODBC就可以使用本地化的协议来访问所有支持ODBC的数据库了。,3OLE DB:,Microsoft公司于1996年提出了
4、一种新的数据库访问策略UDA(Universal Data Access),它的核心是一系列组件对象模型(COM)接口,被命名为OLE DB。这些接口允许开发人员创建数据库提供者(Data Providers)。数据提供者能够很灵活地表达各种格式存储的数据,通用性比ODBC更好、更灵活。,数据库访问方式数据对象,(1)DAO对象(Data Access Objects,数据访问对象):可以使用Jet引擎和ODBC两种方式访问数据库。(2)RDO对象(Remote Data Objects,远程数据对象):一般采用ODBC来访问数据库。(3)ADO对象(ActiveX Data Objects,
5、ActiveX数据对象):主要采用OLE DB访问数据库,也支持ODBC访问,但需要经过OLE DB转接。,ADO对象模型,ADO是Microsoft公司提出的第三种数据库访问对象,是Microsoft数据库访问技术的一个主要发展方向,它把OLE DB封装在一个数据对象中,使得VB程序可以方便地实现对数据库的访问。,ADO与其他两种对象模型的主要区别在于它的简单和非层次结构。这种对象模型共包含7个对象,即Connection、Command、Recordset、Parameter、Property、Field和Error。其中最常用的是Connection、Command、Recordset和
6、Field四个对象。,数据库原理示意,数据库,数据库基本概念1,数据库(DataBase)、关系型数据库管理系统(R-DBMS)表结构一个数据库文件可以包含一个或多个表每个表均有一个表名各表之间可以存在某种关系比如:学生.MDB 个人信息(学号,姓名,班级,年龄,-)成绩(学号,科目代号,成绩)科目(科目代号,科目名称)记录和字段列-字段(FIELD)行-记录(RECORD),数据库基本概念2,关键字(KEY)能够唯一识另一条记录的最小属性集具有唯一值,不能为空侯选关键字、主关键字、外关键字表与表之间的关联是通过关键字完成的表间的关联表之间的关系是按照某一关键字建立的一个表中的记录同另一个表中
7、记录之间的关系根据数量对应关系,分为一对一、一对多、多对多索引(INDEX)一个表可以按照某种特定的顺序进行保存或排列主索引、唯一索引,结构化查询语言(SQL),SELECT语句的基本形式如下:SELECT FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC,数据管理器1,数据库的创建/打开 表结构的创建,图5-5 可视化数据管理器,图5-6“数据库管理”界面,数据管理器2,“表结构”设置,使用DE环境访问数据库方式使用Data控件,绑定约束控件访问数据库方式通过SQL字符串,访问数据库,ADO对象(ActiveX Data Objects),使用Data
8、控件访问数据库,1定义:用运用DATA控件访问DB是一种编程很少,但却能快速访问DB表的手段,为此VB提供了两种工具:其一为Data控件,用于定义数据源;其二为Bound约束控件,用于定义数据源的输 入输出界面。这种方式具有编程简单,易学易用的优点,适合开发原型及小型数据库系统的应用。如图2Data控件 3data控件的约束数据(bound控件),作业,DB,如图,人号:_ 人名:_ 年龄:_ 人员纪录,Data控件,1)名字:Data(n)2)功能:(定义数据源)通过Data控件无须编程,直接访问由其属性定义的数据源;Data控件有四个导航器,用于显示域上移动被显示的内容,相当于顺序查找;被
9、显示内容可在屏幕上直接修改,当导航器从当前记录移动后,被修改既被接受。,3)后台位置动作:,把Data控件关联的数表全部调入内存。如下图所示:,约束控件(Recordset)内存 data Data控件 Data1,DB,4)用ADO方式建立DB应用程序的步骤,那么如何设置Data控件属性,及约束控件与Data的某字段的关联?,建立Form,把Data控件放入Form中,设置Data控件属性,建立对数据库的连接,向Form上添加约束控件,使其与Data控件记录集的某个字段关联,放入其他需要的控件,并编写有关事件过程,ADO数据控件使用方法及步骤:,(1)建立逻辑数据库(ODBC数据源)(2)“
10、部件”中加入“ADO Data Control6.0”(3)窗体上放置一个 ADO Data 控件(AdoDcUser),建立与数据库及表的连接。I.在“属性”窗口中,单击“ConnectionString”打开“ConnectionString”对话框,设置ODBC 数据源名。II.在“属性”窗口中,将“RecordSource”属性设置为一个表名或SQL语句。例如:SELECT*FROM Tbl_User;,(4)建立ADO Data控件与用户界面控件的绑定。I.在窗体上放置一个Text控件II.DataSource属性设为AdoDcUser,将该文本框与ADO Data控件绑定III.D
11、ataField属性设置为该文本框要显示字段的名称,如Name。IV.DataFormat属性设置该文本框显示数据的格式(类型)添加其他数据绑定控件Combo,Grid等(方法同上)。下拉列表框中项目添加仍需用AddItem方法。注:DE环境同样可做此绑定设置。,5)Data控件的子对象,data对象 库的表、视图、查询 Record set 记录集 Field 表项、字段,6)Data控件的及其子对象的属性Conect:Database name:Recordsource:Recordset:Recordtype:EOF/BOF recordcount:Bookmark:fields:7)方
12、法(Data的子对象Recordset对象的方法、Data控件的方法),调用:.,Conect:定义关联的DBMS的名字,其缺省值为ACCESS。Database name:定义所关联用户数据库名字,包括所有的路径名。如人事库、学生库等。Recordsource:定义关联的表名字、视图的名字或查询表名字,也可直接写Select语句,从表中抽出数据集合。Recordset:记录对象,也可看为属性,通过属性可直接访问由Data控件调入内存的所有数据。命令格式为:.。因此Recordset是一种浏览数据库的工具,也视为内存中对表的查寻结果。,Data控件的属:,Recordtype:确定记录集类型,
13、描述数据集合的特征。Recordtype=0-tables,定义数据源可以修改,支持索引。1-Dynasets,数据源可以修改,用于表的查寻。2-Snapshots,数据只读属性,使用成本低。EOF=Ture-recordset记录集中当前记录在文件尾;False-recordset记录集中当前记录不在文件尾BOF=Ture-recordset记录集中当前记录在文件头;False-recordset记录集中当前记录不在文件头。注意:如图所示:头、尾记录为空白记录,限制导航器的 移动。调用格式:Data1.recordset.eof/bof,Data控件的子对象属:,recordcount:re
14、cordset记录集中的记录个数。Bookmark:系统给予recordset 每一行的唯一标签。其标志与记录集的顺序无关。属性调用格式:.fields(n):表示调用Recordset的某个字段 属性调用格式:.fields(n),Data控件的子对象属:,Data的子对象Recordset对象的方法:,无条件顺序移动move方法 有条件的查找Find方法 数据库记录的编辑方法 索引查找,无条件顺序移动move方法,格式:功能:按记录的物理顺序进行顺序移动其中movefirst将记录定位到第一条记录;movelast将记录移到最后一条记录;moveprevious将记录移到当前记录的前一条记
15、录;movenext将记录移到当前记录的下一条记录。调用:.Recordset.,有条件的查找Find方法,格式:其中条件为逻辑表达式。功能:findfirst在recordset中将记录定位到满足条件的第一个记录;findlast在recordset中将记录定位到满足条件的最后一个记录;findprevious在recordset中将定位到满足条件的记录的前一个记录findnext在recordset中将定位到满足条件的记录的后一个记录;调用:.recordset.find.如果找不到,需要做容错处理,使用nomatch方法表示find查找失败。,数据库记录的编辑方法,addnew:增加一个
16、空白记录到文件尾部;delete:删除recordset中当前记录;edit:使当前记录处于可以修改的状态;update:将当前记录写入数据库中;refresh:同上。使用格式:.,索引查找,格式:Seek“运算符”,变量值。如Seek“=”,“004”。使用条件:在使用Seek前相应的索引文件必须打开。打开索引文件的格式为:.recordset.index=”索引文件的关键字段名”例如,.recordset.index=”primarykey”.recordset.index=”职称”seek文件建立的策略:在经常性查找和使用的时候需要建立seek文件,因为系统的开销大。而只找一条记录时使用
17、find。,Data控件的方法,Refresh方法:功能:刷新多用户环境下内存Recordset中的内容,重新抽取一次内容。Updaterecord方法:功能:把data控件内容保存到数据库中。经常用于save按钮的使用。不能触发error事件,但update能触发error事件。能触发validata事件。Updatecontrols方法:清除对当前记录的当前修改。,data控件的约束数据(bound控件),定义:用于把data控件记录集中当前记录显示/编辑的区域,即输入/输出区域。常用约束控件:Label,text,checkbox,optionbutton,listbox,combobo
18、x,msflexgrid等控件可以作为约束控件。属性(反应约束控件与Data的某字段的关联):Datasource:反映约束控件对应的实际数据源。如表、视图等。Datafield:表示所绑定的数据源recordset的某个字段。注意几点:,注意几点:,利用Msflexgrid为约束控件只需定义Datasource属性既可以。利用Listbox、Combobox作约束控件,其Datasource、Datafield属性都不用定义,必须写一段程序完成数据的装入,程序如下:data1.refresh data1.recordset.movelast data1.recordset.movefirst
19、 for i=1 to data1.recordset.recordcount list1.additem data1.recordset.field(“名”)data1.recordset.movenext next,约束控件的使用方法及其步骤:,创建窗体form并放入约束控件及Data控件;修改约束控件的某些属性,特别是定义Datasource和Datafield属性,来创建约束对象与Recordset的字段关联;Data1.connect/databasename/recordsouce/recordsettype 约束控件.datasource=data1,约束控件.datafield
20、=au_id 放入其他控件并编写事件过程。,DATA控件触发事件Error、Validate:,功能:该事件的处理过程中常用于数据有效性和完整性控制。触发时机:使用data控件导航器移动记录值使用Move 方法使另一条记录成为当前记录之前使用update更新数据时,当把物理数据库真正更改之前被触发使用Delete,close,Unload(关闭窗口)操作之前被触发按updateRecord事件不触发validate,将触发Dberro事件该方法用于保存记录的按钮的事件程序中 例子,例:检查某文本框Text,(其值将修改某个表)的值发生变化后询问用户是否要保留修改。,Private Sub Da
21、ta1-validate(Action AS integer,Save AS Boolean)Dim Ans AS integcr IF text1Data Changed Then Ans=Msgmox(“文本内容已修改,是否保留?”VbYesNo)IF ans=vbyes Then Save=True(保留修改)Else Text1Datachanged=F(不保留修改)ENDIF ENDIFEND Sub,例题1 建立Data控件与Bible下Authors表关联,做三个约束控件与Authors三个变量关联,运行并利用Data控件导航器浏览内容,补充资料:VB带的两个数据库:1Bible
22、(title,author,title author,publisher,all titles)Author(au_id,authour,year born)Publisher(pub_id,name,company,address,city,state,zip,telephone,fax,commend)Title(title,year publish,isbn,pubid,descriptic,notes,subject,comments)Title author(isbn,au_id)All titles(title,isbn,author,year pub,company)2Nwind
23、数据库结构请同学自己整理出来。,建立如图所示的界面,其中:有3个label控件,3个text控件,1个data控件。,Data1控件属性设置如下:Data1.connect=access Data1.databasename=”c:vb98bible.mdb”Data1.recordsouce=authors Data1.recordsettype=tablelabel控件属性设置如下:Label1.caption=au_id;Label2.caption=author;Label3.caption=year born。,text控件属性设置如下:Text1.datasource=data1,
24、Text1.datafield=au_id;Text2.datasource=data1,Text2.datafield=author;Text3.datasource=data1,Text3.datafield=year born。设置完成上述控件属性后,运行。利用data控件的导航器观察数据库记录的内容。,上机练习内容:,1利用move方法。要求程序运行时将data控件隐藏,对c2及c3做容错处理。利用导航器实现对”year born”的赋值。(year born=1000+2利用导航器及关键字段实现对authors 的增、删、改操作。3Find 及seek的使用。在authors中查找某
25、一个指定的记录值,其关键字为au_id。要求:按find时,支持seek的控件隐藏;按seek时,支持find的控件隐藏。找不到记录时使用nomatch做容错处理。使用inputbox动态输入指定的查找值au_id。,用ADODE 环境访问数据库,数据环境设计器为创建编程的运行时数据访问提供了一个交互的、设计时环境。提供在VB应用程序中访问数据库的接口。链接数据库的操作步骤访问数据库(RecordSet)属性和方法,总结,用ADODE 环境访问数据库1,要引用数据环境设计器,请按照以下步骤执行:“工程”-“引用.”-“Data Environment 1.0”创建一个 Connection 对
26、象,建立一个和远程数据库的连接(该数据库为逻辑数据库)。Command 对象定义了从一个数据库连接中获取何种数据的详细信息。Command 对象既可以基于一个数据库对象(例如:一个表、视图、存储过程或同义词),也可以基于一个结构化查询语言(SQL)查询。Command对象建立的同时,建立一个Recordset对象,实现对记录的进行访问。例如,当数据环境设计器创建CmdUser命令时,它同时创建一个称为rsCmdUser的Recordset对象。,总结操作步骤,详细操作步骤,VB中对数据库访问的实现步骤:(1)建立物理数据库。方法:I.“外接程序”-“可视化数据管理器”II.外部数据库管理系统,
27、如:Access(2)为物理数据库建立逻辑数据库。方法:利用Windows工具建立ODBC数据源(3)设置ADO中间件,以实现和逻辑DB的连接。方法:添加一个数据环境设计器对象:“工程”-“引用.”-“Data Environment 1.0”“工程”-“添加 Data Environment”。,(4)建立与逻辑数据库的连接。方法:I.添加 Connection 对象 II.“数据链接属性”对话框中,在“提供方”和“连接”选项卡中指定连接数据库信息。(5)建立与数据库中某个表的连接。方法:I.在Connection对象下添加Command对象 II.设置Command属性:Database
28、Object下拉列表中选择数据库对象的类型,可以是一个存储过程、同义词、表或视图。Object下拉列表中选择一个对象的名字。,(6)VB应用程序代码中引用该数据环境。方法:用DIM语句创建数据环境实例变量后,才能引用。格式:Dim myDE as New DEWork,(7)对数据表记录进行读、写等操作。方法:在代码中将Command对象作为数据环境的一种方法来引用,并将其recordset作为数据环境的一种属性来引用。通过(6)所建的实例变量引用。例如,如果在名为DEWork的数据环境中创建了CmdUser命令,就可以在代码中用myDE.rsCmdUser引用Command对象中的记录集。与
29、ADO Recordset关联的方法都可以应用于myDE.rsCmdUser。例如,用于添加、更新、删除和遍历记录的方法。例:myDE.rsCmdUser.Fields(1).Value=“cxd”,总结访问数据库的步骤:,(1)建立物理数据库(2)为物理数据库建立逻辑数据库ODBC(3)设置ADO中间件以实现和逻辑DB的连接。DE环境如:DEWork(4)建立与逻辑数据库的连接Connection(5)建立与数据库中某个表的连接Command(6)VB应用程序代码中引用该数据环境Dim myDE as New DEWork(7)对数据表记录进行读、写等操作myDE.rsCmdUser.Fie
30、lds(1).Value=“cxd”,对数据库的记录的显示操作,一般可通过下面几种方法显示记录集中的数据:1)在TextBox控件中显示Text1.Text=myDE.rsCmdUser.Fields(学号),2)读取到变量中Dim strNo As StringstrNo=myDE.rsCmdUser.Fields(学号)Text1.Text=strNo,3)在Grid控件中以二维表的形式显示一般可以采用MSFlexGird控件进行显示,这个控件的用法比较简单,请同学们参照教材中的演示代码。注意:显示前需要清空原控件中的显示内容需要先打开数据库,做完后还需要关闭数据库,下次实验课练习根据综合
31、作业的需要,自己建立一“学生信息”数据库,其中至少包括四个表“学生基本信息”,“学生选课”,“民族”和“学院信息”;在作业中,建立一数据环境、连接及命令,实现与表“学生基本信息”、“民族”的连接。要求要反复练习,明确掌握数据环境、连接、命令及RecordSet的概念及其对应于物理数据库、表中的对象,在VB应用系统中如何使用。,总结步骤:,(1)建库:建立物理数据库及其逻辑数据库ODBC(2)环境:设置ADO中间件以实现和逻辑DB的连接。DE环境如:StMisDE(3)连接:Connection建立与逻辑数据库的连接;Command建立与数据库中某个表的连接。(4)引用:VB应用程序代码中引用该
32、数据环境Dim MisDE as New StMisDE(5)读写:对数据表记录进行读、写等操作,关于(5)对数据库的读写:,打开表:dim strSql As String strSql=Select Distinct s_Department From Tbl_Dep MisDE.rsCmdQuery.Open strSql 可做:清空、赋值、显示、上/下一个等操作控件对象名.Clear 初始化时首先将显示区清空关闭:MisDE.rsCmdQuery.Close,初始化时需要剔除重复项,属性与方法,属性:Bof、EofFields、RecordCount、AbsolutePosition方
33、法:AddNew、Delete、Update、Move n、MoveFirst、MoveNext、MovePrevious、MoveLastOpen、Close、Find,增删改操作修改,打开:strSql=Select*From Tbl_Student MisDE.rsCmdQuery.Open strSql;查找“学号”为某值的记录修改 strMes=s_StNo=&TxtStID.Text&MisDE.rsCmdQuery.Find strMes赋值:MisDE.rsCmdQuery.Fields(“s_StNo”)=txtStID.Text 等等保存并关闭 MisDE.rsCmdQue
34、ry.update MisDE.rsCmdQuery.Close,s_StNo=09243001,新增:If MisDE.rsCmdQuery.EOF Then 未找到,指针到底了 MisDE.rsCmdQuery.AddNew EndIf,删除:If Not MisDE.rsCmdQuery.EOF Then MisDE.rsCmdQuery.Delete EndIf,新增,删除,记录游标(RecordSet)1,属性:Bof,Eof:文件头、文件尾标志;应用:检测记录是否读取完毕、是否查找到指定记录;表中或查询中是否有记录 例:IF myDE.rsCmdUser.Eof Then Exit
35、 DoFields:字段集;应用:读取及设置记录各字段值例:赋值:myDE.rsCmdUser.Fields(“Name”)=txtName.Text显示:txtName.Text=myDE.rsCmdUser.Fields(“Name”),记录游标(RecordSet),属性:RecordCount:记录数。应用:统计表、查询中的记录数例:For ii=1 To myDE.rsCmdUser.RecordCountAbsolutePosition:当前记录指针的绝对位置应用:与RecordCount一起显示记录的总数及当前记录号例:LblNum.Caption=第&myDE.rsInsUse
36、r.AbsolutePosition&”条记录/总”_&myDE.rsInsUser.RecoudCount&”条记录”第条记录/总RecoudCount条记录,记录游标(RecordSet),方法:AddNew:增加一条空白记录;Delete:删除当前记录;Update:将内存中的记录修改,写入数据表保存;Move n,MoveFirst,MoveNext,MovePrevious,MoveLast:移动指针例如:myDE.rsCmdUser.Update,记录游标(RecordSet),方法:Open,Close:打开、关闭一个记录游标格式:myDE.rsCmdUser.Open sour
37、ce,ActiveConnection,CurrsorType,LockType格式:myDE.rsCmdUser.CloseFind:查找满足条件的记录;例:myDE.rsCmdUser.Find“name=cxd And Age=20”,通过SQL字符串,访问数据库,(1)Connection对象的使用方法(2)Recordset和Field对象使用方法(3)将记录在窗体上显示(4)报表输出(自学)(5)小结(6)练习题,(1)Connection对象的使用方法,在VB应用程序中主要用这个对象建立与数据库的连接,一般的方法是:1)声明并创建对象Dim ADOcn As Connection
38、 声明对象Set ADOcn=New Connection 创建新对象或将上述两条语句直接写成Dim ADOcn As New Connection,2)建立数据库连接一般通过下列语句完成与数据库(源)的连接:ADOcn.Open 连接字符串,自动生成“连接字符串”的方法,首先选择“工程添加Data Environment”菜单项,链接SQL数据库,在Connection1之上点击鼠标右键,并选择“属性”菜单项,链接ACCESS数据库,链接ACCESS数据库,链接SQL数据库,链接SQL数据库,链接ACCESS数据库,SQL链接字符串,SQL链接字符串,3)对数据表进行更新操作,我们还可以利用
39、Connection对象对数据库中的基本表进行增加、删除、修改等不返回结果集的操作,语法如下:ADOcn.Execute SQL语句字符串,总结,总结Connection对象的使用方法:,0)准备ADO环境:引用MicrosoftActiveXDataObjects2.7Library1)声明并创建对象Dim ADOcn As New Connection2)建立数据库连接ADOcn.Open 连接字符串3)对数据表进行更新操作ADOcn.Execute SQL语句字符串,举例,3)对数据表进行更新操作执行,声明一个字符串变量Dim strSQL As String拼写Insert、Delet
40、e、Update结构化查询语句strSQL=Delete From 学生成绩表 strSQL=strSQL+“Where学号=”+“”+Combo1.Text+“执行SQL语句ADOcn.Execute strSQL这里使用两个“”表示一个单引号字符,比如拼写后的strSQL应该具有以下内容:Delete From 学生成绩表 Where 学号=001,执行一个字符串。实现一个增删改动作,不能作如:赋值、显示等的表操作。,字符串变量优点在与便于调试。,(2)Recordset和Field对象使用方法,第一步:声明一个新的Recordset对象Dim ADOrs As New Recordset
41、第二步:与ADO链接对象建立关联ADOrs.ActiveConnection=ADOcn第三步:执行Select操作ADOrs.Open Select*From 学生成绩表第四步:进行数据库的各种访问。第五步:关闭记录集对象ADOrs.Close,3)对数据表进行更新操作增删改,当使用Open方法打开一个记录集后,我们就可以访问其中的数据了,一般的方法是:ADOrs.Fields(“学号”)或者ADOrs(学号),(3)将记录在窗体上显示,一般可通过下面几种方法显示记录集中的数据:1)在TextBox控件中显示Text1.Text=ADOrs.Fields(学号),2)读取到变量中Dim st
42、rNo As StringstrNo=ADOrs.Fields(学号)Text1.Text=strNo,3)在Grid控件中以二维表的形式显示一般可以采用MSFlexGird控件进行显示,这个控件的用法比较简单,请同学们参照教材中的演示代码。,在使用这类控件显示数据时,一般的步骤是:第一步:清空数据。第二步:设置标题栏。第三步:打开记录集。第四步:使用循环将记录集中的数据添加到Grid中去。,例子,物质台账,在模块儿中:Public adocn As New ConnectionSub main()connet the database adocn.Open Provider=Microsof
43、t.Jet.OLEDB.4.0;Data Source=C:文件vb实验数据库字符串访问数据库物资库.mdb;Persist Security Info=False show the main form Form1.ShowEnd Sub,Source=+App.path+物资库.mdb,Source=C:文件vb实验数据库字符串访问数据库物资库.mdb;Persist Security Info=False,Source=+App.path+物资库.mdb;Persist Security Info=False,引用ADO环境MicrosoftActiveXDataObjects2.7Lib
44、rary,在窗体中添加记录,单击添加按钮Private Sub Command1_Click()Dim strSQL As String Dim adors As New Recordset adors.ActiveConnection=adocnstrSQL=select*from 物质台帐 where 编码=+Text1.Text+adors.Open strSQL If adors.EOF Then如果指针到底了,说明没有找到该记录可以进行添加 strSQL=“Insert into 物质台帐(编码,名称,单价,备注)values(strSQL=strSQL+Text1.Text+,st
45、rSQL=strSQL+Text2.Text+,strSQL=strSQL+Text3.Text+,strSQL=strSQL+Text4.Text+)adocn.Execute strSQL Else MsgBox“此记录已经存在 End IfEnd Sub,Insert into 物质台帐(编码,名称,单价,备注)values(001,负载,12312,这是一人上夺),字符串连接练习,将下列SQL语句连成字符串:Insert into 物质台帐(编码,名称,单价,备注)values(001,负载,100,这是交大)strSQL 首先确认在哪里打引号,静值和变量 Insert into 物质
46、台帐(编码,名称,单价,备注)values(001,负载,100,这是交大)strSQL=“Insert into 物质台帐(编码,名称,单价,备注)values(strSQL=strSQL+Text1.Text+,strSQL=strSQL+Text2.Text+,strSQL=strSQL+Text3.Text+,strSQL=strSQL+Text4.Text+),“,“,“,“,“,“,“,“,“,“,(4)报表设计,1 常用的报表设计工具概述一个功能完整的数据库应用程序,除了具有数据维护、查询和显示功能外,还必须具有报表输出。一个没有报表输出的程序绝对是不符合实用要求的。VB中提供了
47、多种报表输出的方法,常用的有以下几种:,(1)Data Reports(报表设计器)。这是VB内置的功能,通过“工程添加Data Report”菜单可打开报表设计界面,具体操作过程下面后详细简单。,(2)Crystal Reports(水晶报表)。这是一个VB外接程序,需要单独安装。安装完成后,使用方法与Data Reports类似。报表设计完成后,以文件形式保存在磁盘上(*.rpt),然后在VB程序中通过控件引用的方式调用。,(3)利用Excel方法。主要分四个步骤:首先要在计算机上安装了Microsoft Excel应用程序,并利用它制作好报表格式;然后在VB中通过“工程引用”菜单项,加载
48、“Microsoft Excel Object Library”;第三使用Dim语句声明一个Excel对象;第四编写程序,利用这个Excel对象与后台的Excel应用程序进行数据交换,最终将数据传输到Excel表中。,此处可通过循环结构,取得数据表中的记录,(4)利用第三方报表控件。商品化软件中往往使用第三方专门的控件制作报表,上面介绍的Crystal Reports就属于这类控件。常见的第三方控件有Formula One、VsView等等均是非常好的报表制作工具,它们通常需要单独购买。使用方法比较简单,只需要在计算机上安装并将控件(Ocx)添加到工具箱中,即可象使用VB标准控件一样使用它们了
49、,当然还必须通过这些控件自带的帮助文件,熟悉相关的事件、方法、属性设置的知识。,Data Reports报表设计器的使用,报表设计实例,小结,1、数据库类应用程序:对数据库进行增加、修改、删除以及查询等操作 2、基本开发模式(嵌入式)ADO数据对象SQL语句MSFlexGrid和报表输出的方法,练习题,1、在好VB中,Access数据库属于()A、本地数据库 B、网络数据库 C、外部数据库 D、远程数据库,2、不属于VB数据库引擎的是()A、ODBCB、BDEC、Jet引擎D、OLE DB,3、使用ADO模型时,可通过哪个属性建立Recordset和Connection对象的连接()A、ExecuteB、CommandTypeC、OpenD、ActiveConnection,4.设ADOrs为Recordset对象,从Table1中获取所有记录的语句是()A、ADOrs.New“select*from table1”B、Adors.Open“Select*from Table1”C、Adors.Execute“Select*from Table1”D、Adors.select*from Table1,5、系统开发大作业请设计一数据库,完成对它的增、删、改、查询、打印功能。,本讲结束!,Thank YouAny Questions?,