《第9章ADO编程》由会员分享,可在线阅读,更多相关《第9章ADO编程(50页珍藏版)》请在金锄头文库上搜索。
1、第第9章章 ADO对象和对象和ADO编程编程 拓禾长耿瞻录假谈男今疡培所最掀瓷度这贬诫髓锌鄙咱镐澎批挑必袭材乖第9章ADO编程第9章ADO编程19.1 ADO的编程模型的编程模型ADO(ActiveX Data Objects)是是Microsoft公司最新推公司最新推出的数据访问技术。它将逐步替代出的数据访问技术。它将逐步替代DAO和和RDO而而成为主要的数据访问接口。成为主要的数据访问接口。1 ADO编程模型的层次结构简介编程模型的层次结构简介ADO编编程程模模型型主主要要由由连连接接(Connection)、命命令令(Command)、记记录录集集(Recordset)、字字段段(Fie
2、ld)、参参数数(Parameter)、错错误误(Error)和和属属性性(Property)等等七七个个对对象象集集合合组组成成。图图9-1表示了表示了ADO对象模型的层次结构。对象模型的层次结构。堡钓省疙墩定钡筛奥师铱拥胎仕圆途墓弧饥殖你牲宪杨忠碘瘫输钓焚炬札第9章ADO编程第9章ADO编程21. ADO编程模型的层次结构编程模型的层次结构旭崎折帧克虐索哩割妹玻橇侵遗新验限而钵恿乾己裳钡卢恳涸噪捍仿握伐第9章ADO编程第9章ADO编程32. 连接对象(连接对象( Connection)Connection对象代表了打开的与数据源的连接。对象代表了打开的与数据源的连接。建立与数据源的连接后建
3、立与数据源的连接后,可以用可以用Connection的属性的属性和方法来执行各种操作。如:和方法来执行各种操作。如:ConnectionString属性:连接字符串,对连接进行属性:连接字符串,对连接进行初始化。初始化。Provider属性:指定属性:指定OLE DB的提供者。的提供者。Open方法:建立到数据源的物理连接。可用方法:建立到数据源的物理连接。可用Close方法将其切断。方法将其切断。Execute方法:对连接执行的各种操作。方法:对连接执行的各种操作。Cancel方法:取消方法:取消Open方法或方法或Execute方法的调用。方法的调用。乳兢涡碍寨嚣涂台跑遭志母吐蜀佑洽展蜀叠
4、蔓垂仟忘缠毛鞋上臣韩磺旬蛊第9章ADO编程第9章ADO编程43.命令对象命令对象(Command)Command对象对象定义了将对数据源执行的命令,定义了将对数据源执行的命令,相当于一个查询。使用相当于一个查询。使用Command对象查询数据对象查询数据库,并返回库,并返回Recordset对象中的记录。命令可以对象中的记录。命令可以在数据源中添加、删除或更改数据。在数据源中添加、删除或更改数据。常用的属性和方法如下:常用的属性和方法如下:lActiveConnection属性:设置到数据源的连接信息。属性:设置到数据源的连接信息。lCommandText属性:指定发送的命令文本。如属性:指定
5、发送的命令文本。如SQL语句、数据表名称。语句、数据表名称。lCommandType属性:设置或返回属性:设置或返回CommandText的类的类型。型。lExecute方法:执行方法:执行CommandText指定的操作。指定的操作。lCancel方法:取消方法:取消Execute方法的调用。方法的调用。脐巴黍赵符轻倘蔫绘娟退渴睹趣衰袋俺劈仲痕饭锗云祁扔椽贤诗乐冀乎噎第9章ADO编程第9章ADO编程54.记录集对象(记录集对象(Recordset)描述来自数据表或命令执行结果的记录集合。描述来自数据表或命令执行结果的记录集合。 Recordset对象是在行中检查和修改数据最主对象是在行中检查
6、和修改数据最主要的方法。常用于指定可以检查的记录,移要的方法。常用于指定可以检查的记录,移动记录,添加、更改或删除记录等。动记录,添加、更改或删除记录等。Recordset对象常用的属性对象常用的属性:Source:返回或设置返回或设置Recordset对象的生成方式:对象的生成方式:Command对象、对象、SQL语句或查询名语句或查询名RecordCount:返回记录集中的返回记录集中的记录总数记录总数。AbsolutePosition: 记录指针位置记录指针位置(从从1开始开始).奄室佑镶面韧你拈详蜡闸吩徘破机净理丫庭炸稳嗓页氢灿奈免割垃姿峙恳第9章ADO编程第9章ADO编程6BOF、E
7、OF:标志当前记录指针是否首记录:标志当前记录指针是否首记录之前或末记录之后。之前或末记录之后。Bookmark:返回或设置返回或设置Recordset对象中当前对象中当前记录的书签。记录的书签。CursorType:返回或设置返回或设置Recordset对象中对象中 使使用的游标类型。用的游标类型。Filter:设置:设置Recordset对象中的数据筛选条对象中的数据筛选条件。件。Sort:设置排序字段。:设置排序字段。烤层掖辨牙佬堪死序借留秀取再菜疵豹试歹佯瞄僧烩粮赁湿避诚拿绸际伺第9章ADO编程第9章ADO编程7Recordset对象常用的方法:对象常用的方法:Open:打开代表数据表
8、、查询结果等记录集。打开代表数据表、查询结果等记录集。MoveFirst, MoveLast, MoveNext,和和MovePrevious:移动记录指针到首记录,末记录,下一个记录,上一移动记录指针到首记录,末记录,下一个记录,上一个记录。个记录。AddNew:创建一条新的空记录。:创建一条新的空记录。Update:保存当前记录的更改。:保存当前记录的更改。CancelUpdate:调用:调用Update方法之前取消对当前记录方法之前取消对当前记录的更改。的更改。Delete:删除当前记录。:删除当前记录。Requery:重新执行生成重新执行生成Recordset对象的查询,以更新对象的查
9、询,以更新其中数据。其中数据。弗没沫各毙哼惯厉妻镀息寂鞍辩悬纽掣愿腐途羚灿旧桂直晦换却泰毫乘揣第9章ADO编程第9章ADO编程85. 字段对象(字段对象(Field)和字段集合()和字段集合(Fields)Field对象代表记录中的一列,对象代表记录中的一列,Fields是是Field对象的对象的集合,描述记录中的字段的集合。集合,描述记录中的字段的集合。Fields的主要属性和方法如下:的主要属性和方法如下:Name属性:字段的名称。属性:字段的名称。Value属性:字段的值。属性:字段的值。Count属性:得到属性:得到Fields集合中包含的集合中包含的Field对象的数对象的数量。量。
10、Append方法:用于向方法:用于向Fields集合添加一个集合添加一个Field对象。对象。Delete方法:用于从方法:用于从Fields集合中删除一个集合中删除一个Field对象。对象。使用格式:使用格式:Fields.Delete FieldNamel其中其中Fields是要删除字段的是要删除字段的Fields集合,集合,FieldName是是要删除的要删除的Field对象名。对象名。缠烷祟咳辐镊瞅戚咐伙雪阀辨扒核调蹲狭踩酪夺聘闰冕促沙巴蛀梧往悬靛第9章ADO编程第9章ADO编程99.2 使用使用ADO对象编程对象编程使用使用ADO对象编程,一般有以下几个步骤:对象编程,一般有以下几个
11、步骤:l在在VB工程中引用工程中引用ADO对象库;对象库;l建立与数据库的连接;建立与数据库的连接;l创建命令;创建命令;l运行命令;运行命令;l使用记录集的属性和方法操作数据库中的数据。使用记录集的属性和方法操作数据库中的数据。献脱炒顷蚤水砒掳嚎秽绪遭阮敲颂滩蓬沥贷洒梆环项李钢宋送泽圣愿鹊刺第9章ADO编程第9章ADO编程109.2.1 引用引用ADO对象对象 要在要在VB中使用中使用ADO对象编程时,事先必须对象编程时,事先必须在工程中引用在工程中引用ADO对象库。对象库。在在VB6.0中提供了中提供了ADO类型库类型库ADODB引用方法:执行菜单引用方法:执行菜单工程工程引用引用命令,命
12、令,在打开的引用对话框中,选中:在打开的引用对话框中,选中:Microsoft ActiveX Data Objects 2.6 Library单击单击确定确定按钮按钮 执掐桶糖燥证株柏圆羡唆戊摄努悠庚绳瓢腋畴麦褪秸郭侧瘤饰卡灵兢勺难第9章ADO编程第9章ADO编程119.2.2 建立与数据源的连接建立与数据源的连接建立与建立与SQL Server数据库连接的方法很多,这里主数据库连接的方法很多,这里主要介绍最常用的方法,即用要介绍最常用的方法,即用DSN建立连接。建立连接。以前边已配置好的数据源以前边已配置好的数据源cjgl为例,建立数据源的为例,建立数据源的代码格式有以下二种。代码格式有以
13、下二种。 1用用Connection对象的对象的ConnectionString属性属性l Dim cn As New ADODB.Connection 定义连接对象变定义连接对象变量量cnlcn. Connectionstring = DSN= cjgl ; uid=sa ; pwd = sal cn. ConnectionTimeout=10l cn.Open 打开连接打开连接l 其它操作数据库的代码其它操作数据库的代码l cn.Close 关闭连接关闭连接蚕蠕萌步堂庶蛇躁篱但戏莽灾睛甭缄皖方搞届哪尉轩埂淡扬猖隧籽婿猖好第9章ADO编程第9章ADO编程122用用Connection对象的带
14、参数的对象的带参数的Open方法方法 Dim cnn As New ADODB.Connection 定义连接定义连接对象变量对象变量cnncnn.Open DSN=cjgl; uid=sa; pwd=sa; 打开连打开连接接 其它代码其它代码 cnn.Close 关闭连接关闭连接掺诡觅柒亮瞧貌狐铰憎奶替的监尤脱蹬忽似脑飘垮篮巾伙沏忱屹废霜剪孝第9章ADO编程第9章ADO编程139.2.3 创建命令及运行命令创建命令及运行命令1创建命令创建命令建立和数据源的连接后,可以先声明建立和数据源的连接后,可以先声明Command类类型的对象变量,然后设置该对象变量的型的对象变量,然后设置该对象变量的A
15、ctiveConnection属性指定该命令使用的连接对象,属性指定该命令使用的连接对象,设置设置CommandText属性,设置命令文本字符串,属性,设置命令文本字符串,则该命令对象就可以在以后的程序中使用了。以下则该命令对象就可以在以后的程序中使用了。以下为常见的代码编写格式:为常见的代码编写格式:lDim cmd As New ADODB.Command 声明声明Command对对象变量象变量lSet cmd . ActiveConnection= cn 指定该命令使用的连指定该命令使用的连接对象接对象lcmd . CommandText = “Select * From 教师信息表教师
16、信息表”l 其它代码其它代码颧哗章基衙韭颤襟蔽咖窑陵霓统腿灌脚蠢锥喻栖毅孜糯鹅岔缅吨上坪骚溉第9章ADO编程第9章ADO编程142运行命令运行命令运行命令以返回运行命令以返回Recordset集合。可以用集合。可以用Connection.Excute、Command.Excute、Recordset.Open这三种方法运行命令,它们这三种方法运行命令,它们的完整语法格式如下:的完整语法格式如下:lConnection.Excute( CommandText , RecordsAffected , Options )lCommand.Excute( RecordsAffected, Parame
17、ters, Options )lRecordset.Open Source, ActiveConnection, CursorType, LockType, Options掂搬摇与韧亩跺息匆摈旧囤拐诵粟晃浪蔷灭蒋蘸福给旷嗽丢奔测钠陆济逮第9章ADO编程第9章ADO编程15以下代码用以下代码用Recordset的的Open方法运行命令方法运行命令cmd。Dim rs As New ADODB. Recordset rs. CursorLocation = adUseClient 使用本地使用本地游标库提供的客户端游标游标库提供的客户端游标rs.Open cmd,adOpenStatic, adL
18、ockBatchOptimistic 钉袖滴暮遏拽府考峨协鲁连矿些骏颜兜冶脆未斌债箭寐鞍笛讫琵轻焦松蝇第9章ADO编程第9章ADO编程169.2.4 用代码访问用代码访问ADO对象对象用代码访问用代码访问ADO对象,通过操作对象,通过操作ADO对象的方法对象的方法和设置其属性,可实现对数据库的访问和控制。访和设置其属性,可实现对数据库的访问和控制。访问问ADO对象时,一般先声明对象变量,然后建立该对象时,一般先声明对象变量,然后建立该对象的引用,程序执行完,最后应释放对象变量。对象的引用,程序执行完,最后应释放对象变量。如:如:Dim cn As New ADODB.Connection 声明
19、声明Connection对象变量对象变量cn.Open DSN=cjgl; uid=sa; pwd=sa; Set cn = Nothing 释放对象变量释放对象变量鄙轧坏段辟醋航衅克扯钥鞍梭巧较刨办打蚕搽综铭愈碳淫业睫镐犁既涉涤第9章ADO编程第9章ADO编程17使用使用ADO对象时,可以通过对象的对象时,可以通过对象的Index属属性或性或Name属性建立对对象的访问。属性建立对对象的访问。如访问如访问Recordset的的Fields对象的语法格式有对象的语法格式有以下几种:以下几种:Dim rst As New ADODB.Recordset rst.Fields (Index) 使用
20、索引号访问字段,使用索引号访问字段,Index=0表表示第一个字段(第一列)示第一个字段(第一列)rst. Fields (FieldName) 使用对象名使用对象名rst. Fields.Item (Index)rst. Fields.Item (FieldName)rst. Fields ! FieldName 使用对象名使用对象名残撬氟锦考构薛绘都破删郝桥辆份豆涅优抗出赛靴历颐轮嚎剁澡沟异蘑绥第9章ADO编程第9章ADO编程18如下面的代码中,分别用如下面的代码中,分别用Fields对象的对象的Index属性或属性或Name属性来引用字段:属性来引用字段: Dim rst As New
21、ADODB.Recordset Text1.Text =rst.Fields(0) Text1.Text =rst .Fields(“学号学号”) Text1.Text =rst.Fields.Item(0) Text1.Text =rst .Fields.Item(“学号学号”) Text1.Text =rst .Fields!学号学号以上几个对记录集中的以上几个对记录集中的字段进行操作的语句字段进行操作的语句的功能是相同的,的功能是相同的,即将即将“学号学号”字段的数据字段的数据项显示到文本框项显示到文本框Text1中。中。迭王孵觉忿限玫蛰抹衍匡宠鲍弹兰镭花陨更分该笛止唬坏簧阀炯誉咬纬悯第
22、9章ADO编程第9章ADO编程199.3 ADO编程应用举例编程应用举例例例9-1 打开一个连接后,创建并运打开一个连接后,创建并运行命令,将教师信息表中部分行命令,将教师信息表中部分记记录集录集中的部分字段打印到窗体上。中的部分字段打印到窗体上。要求只显示男教师的姓名、性别、要求只显示男教师的姓名、性别、单位。单位。设计过程如下:设计过程如下:(1). 新建工程,在窗体中添加一新建工程,在窗体中添加一个命令钮个命令钮(界面如图界面如图)。设置命令钮的属性:设置命令钮的属性:Name :Cmd1 , Caption : 显示数据显示数据 钩酒夹猎雍愧讨祥熏硬包来疼诺船孝叶洪芋剃襄碰陕强釜管季雍
23、习肃值灵第9章ADO编程第9章ADO编程20(2). 配置配置ODBC数据源:数据源: 将将SQL Server数据库数据库 “成绩管理成绩管理”,配置,配置ODBC数据源,名称数据源,名称: “cjgl,(3). 引用引用ADO对象:对象:在在VB工程中,执行菜单工程中,执行菜单工程工程引用引用,选中选中 Microsoft ActiveX Data Objects 2.6 Library (4). 编写代码:编写代码:在窗体的在窗体的(通用通用)(声明声明)段,声明以下对象变量:段,声明以下对象变量:Dim cn As New ADODB.Connection Dim cmd As New
24、 ADODB.Command Dim rst As New ADODB.Recordset虑低虎愈廓炕列坡钡啊硬苏健揍伐兄婚路斧辈富苟再押抢涉甘雍套椿爱温第9章ADO编程第9章ADO编程21Private Sub Cmd1_Click() Dim i As Integercn.Open DSN=cjgl; uid=sa; pwd=sa; 建立数建立数据源连接据源连接Set cmd .ActiveConnection=cn 创建命令创建命令cmd.CommandText = Select * From 教师信息表教师信息表 设置作为命令文本的设置作为命令文本的SQL语句语句cmd.Command
25、Type = adCmdText 设置命令类型设置命令类型cn.CursorLocation = adUseClient rst.Open cmd 运行运行cmd命令产生记录集命令产生记录集活总怖调奉馅痔社跺雕括攫硬妮足定尿摘劝腹镐婆屎几漳醇蚌执炉向邢帐第9章ADO编程第9章ADO编程22使用记录集对象:使用记录集对象:rst.Sort = 姓名姓名 按姓名字段排序按姓名字段排序rst.Filter = 性别性别= 男男 rst.MoveFirstPrint 姓名姓名 & 性别性别 & 单位单位PrintFor i = 0 To rst.RecordCount - 1 Print rst.Fi
26、elds(姓名姓名) & & rst.Fields(性别性别) & & rst.Fields(单位单位) rst.MoveNextNext icn.Close释放各对象变量:释放各对象变量:Set rst = NothingSet cmd = NothingSet cn = NothingEnd Sub图图9-3 例例9-1的运行结果的运行结果抒畅脑怠尿枢凝汾夜疼审糙枣伤苛裸犀旺返团公萎夯送职籽辖虚赏逢遭缺第9章ADO编程第9章ADO编程23例例9-2 设计教师信息表数据编辑窗体。设计教师信息表数据编辑窗体。(1)新建工程。)新建工程。(2)引用)引用ADO对象:执行菜单:对象:执行菜单:工程
27、工程引用引用,选中选中Microsoft ActiveX Data Objects 2.6 Library(3)配置数据源)配置数据源与例与例9-1用同一个数据源:用同一个数据源:cjgl , 所以不必重新配置。所以不必重新配置。(4)设计界面如图)设计界面如图9-4。建立标签建立标签Label1和文本框和文本框Text1控件数组,标签数组控件数组,标签数组用来显示教师信息表的字段名,用来显示教师信息表的字段名,Text1数组用来显数组用来显示或输入、修改表中的数据。示或输入、修改表中的数据。用用Text2显示显示Recordset对象返回的当前记录号及记对象返回的当前记录号及记录总数。录总数
28、。历悠苟赁啪垦戴拒舶玫锦韵见笺柄糜觅叹考规土巴曰输从体钙蜒迸郴凿茸第9章ADO编程第9章ADO编程24图图9-4 例例9-2设计界面设计界面图图9-5 例例9-2运行结果运行结果疡毙弗归真摸邮皮回切圭吉铣湖根癣蜕搔喊魔机贤灶韶啸捉旦鲸砒廷畏掐第9章ADO编程第9章ADO编程25教师表的数据项如下:教师表的数据项如下:教师编号教师编号姓名姓名性别性别职称职称单位单位01001郑虹郑虹男男副教授副教授机械学院机械学院03004孙丽孙丽女女教授教授信息学院信息学院Fields(0)Fields(1)Fields(4)焙尼国锗汪壶渠刻胀清客填疗垒均蚜讽甲逞晦刮筐红珐揭存东现凄癸沤检第9章ADO编程第9
29、章ADO编程26(5)编写程序)编写程序 在在(通用通用)(声明声明)段中定义以下窗体级变量:段中定义以下窗体级变量: Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim cmd As New ADODB.Command 在在(通用通用)(声明声明)段中定义段中定义RefreshForm()通用通用Sub过程,用来显示当前记录集的数据:过程,用来显示当前记录集的数据:Sub RefreshForm()Dim i As Integer If rst.EOF And rst.BOF Then 如果记录集是空如果记录集
30、是空的的 MsgBox 空表,请添加记录空表,请添加记录, vbCritical, 提示提示 Exit Sub End If酝核涎檄逞富逐氟凄钒中虞持趴料讥快粕票辖厚冠缨瘁完俩财逼勤径咨素第9章ADO编程第9章ADO编程27For i = 0 To 4 Label1(i).Caption = rst.Fields(i).Name 将字段名称显示将字段名称显示到标签上到标签上 If rst.Fields(i) “ ” Then 如果当前记录的第如果当前记录的第i个字段值不为空个字段值不为空 Text1(i).Text = rst.Fields(i) 将当前记录显示到文本框中将当前记录显示到文本框
31、中 Else Text1(i) = End If Text1(i).Locked = True 锁住文本框,不允许编辑锁住文本框,不允许编辑Next i显示当前记录的位置显示当前记录的位置/记录总数:记录总数:Text2.Text = 记录记录: & rst.AbsolutePosition & / & rst.RecordCountEnd Sub赴盈昏颗芋萤还微嘛寝泊坐伟邀兄碱遁冷符傈喀覆您蠢崖袭窑拧鄂揩杖蔷第9章ADO编程第9章ADO编程28Private Sub Form_Load()Dim s As Strings = DSN=cjgl;uid=sa;pwd=sacnn.Open s
32、打开连接打开连接cnn.CursorLocation = adUseClientrst.Open Select * From 教师信息表教师信息表 , cnnCall RefreshForm 调用调用RefreshForm过程,显示过程,显示记录集数据记录集数据End Sub僻哲谣严鳞糊办渺毙此习脂雌苹平秉悯墒毕蚂呕谭显懊镭踩棘呐挫奶迷宅第9章ADO编程第9章ADO编程29窗体中添加了窗体中添加了4个命令钮,个命令钮,Name分别为:分别为:cmdFirst, cmdPrevious ,cmdNext, cmdLastCaption分别为:分别为:|、 、|。编程如下:。编程如下:Privat
33、e Sub cmdFirst_Click()rst.MoveFirstCall RefreshFormEnd SubPrivate Sub cmdPrevious_Click() rst. MovePrevious If rst.BOF Then rst.MoveFirstCall RefreshFormEnd Sub赛利葛瓦楚鹅悼篓仑泊纸疆任通应鄂镜新都潭砧羞阶斋缓匹啪凭晒藉崔希第9章ADO编程第9章ADO编程30Private Sub cmdNext_Click()rst. MoveNext If rst.EOF Then rst.MoveLastCall RefreshFormEnd S
34、ubPrivate Sub cmdLast_Click()rst.MoveLastCall RefreshFormEnd Sub迅流墨员翌捍眠校跑馅矛兢市条政醇阻穴耽炔酒枫绷腰辆吠野配忧湖浚跪第9章ADO编程第9章ADO编程31窗体的右边放了窗体的右边放了4个命令钮,个命令钮,Name分别为:分别为:cmdAdd, cmdSave ,cmdDel , CmdEdit, cmdClose Caption分别为:分别为:增加、保存、删除、修改、退出增加、保存、删除、修改、退出 Private Sub cmdAdd_Click()Text2.Text = 新增记录新增记录For i = 0 To 4
35、Text1(i).Locked = False 开锁开锁Text1(i).Text = 清空文本框清空文本框Next iText1(0).SetFocus 设置焦点设置焦点rst.AddNewEnd Sub厅羔彦佑辟酣者翱舒鳞休令韩峰乌峡肪唉疮典垒鹿铀系厉睫琴宝魄厘疟稳第9章ADO编程第9章ADO编程32Private Sub cmdSave_Click()Dim i As IntegerFor i = 0 To 4 rst.Fields(i) = Text1(i) 写入数据库写入数据库Next irst.Update 更新数据库更新数据库Call RefreshFormEnd SubPriv
36、ate Sub CmdEdit_Click() 单击单击修改修改按钮按钮For i = 0 To 4 Text1(i).Locked = False 开锁开锁Next iEnd Sub批及帖翰琉刺掺菲铂公败岿娱蔚项倍彬际沏艘敬础朽冉尔式哼饿泼葫筏扣第9章ADO编程第9章ADO编程33Private Sub cmdDel_Click() rst.Delete rst.MoveNext If rst.EOF Then rst.MoveLastCall RefreshFormEnd SubPrivate Sub cmdClose_Click()Unload MeEnd Sub轩攒戍秆清副钒造烬硷画椭
37、葫匿颓犯遥蔓女磐添柴框遗蜜吭银滇防惧料喜第9章ADO编程第9章ADO编程34图图9-6 登录窗体登录窗体例例9-3 在例在例9-2工程中,设计一个登录窗体,工程中,设计一个登录窗体,用用ADO编程实现登录窗体的功能。编程实现登录窗体的功能。 (1)设计窗体)设计窗体在例在例9-2工程中添加窗体作为登录窗体:执行工程中添加窗体作为登录窗体:执行菜单菜单 工程工程添加窗体添加窗体设置该窗体属性设置该窗体属性Name:frmPassword MaxButton:False (无最大化按钮无最大化按钮)Caption:登录:登录 MinButton: False (无最小化按钮无最小化按钮)添加控件如
38、图添加控件如图9-6恤脸清衙零挽呐创短差舵置饲硬伶娇邢各呵蜕醇艺悦堪功湘子搂咋谋堰遭第9章ADO编程第9章ADO编程35时季矿法祈盖腺果柬侄肪响傣事路膘雄剂婿师嫂赔羡吹督催援怖啃吠革染第9章ADO编程第9章ADO编程36(3)设计代码)设计代码Dim cn As New ADODB.ConnectionDim rst As New ADODB.RecordsetPrivate Sub Form_Load()Dim s As Strings = DSN=cjgl;uid=sa;pwd=sacn.Open s 打开连接打开连接cn.CursorLocation = adUseClientEnd S
39、ub腔莫筏险本孕铃街坎尹观事糠蕉帧箭矩氏滨放行傀浮张满步塌欲犬贴淘牵第9章ADO编程第9章ADO编程37Private Sub cmdOK_Click()rst.Open Select * From 密码表密码表 where 用户名用户名= & Text1.Text & , cn 打开记录集打开记录集If rst.BOF And rst.EOF Then MsgBox 无效用户名,请重新输入。无效用户名,请重新输入。, vbCritical, 错误错误 Text1 = Text1.SetFocusElseIf Text2 = rst.Fields(密码密码) Then 检测密码检测密码 Msg
40、Box 登录成功!登录成功!, vbInformation Form1.Show Me.Hide谤雕柴南巴舵羔赌基希铡磺题遇犯斯悦赘药假林嫉袭网桌设握楚涉得众艰第9章ADO编程第9章ADO编程38Else MsgBox 密码错误,请重新输入密码错误,请重新输入, vbCritical, 错误错误 Text2.Text = 清空密码输入框清空密码输入框 Text2.SetFocusEnd If rst.Close 关闭记录集关闭记录集End SubPrivate Sub cmdCancel_Click() Unload MeEnd Sub硝疡唆拇刹敲抬戎助灶泅寐箕痊怔身乖吏俭躬咽地帚蛔粗愧讼扼捞
41、柒浩亨第9章ADO编程第9章ADO编程39例例9-4 用用MSFlexGrid控件显示教师信息表的所有记控件显示教师信息表的所有记录。录。(1)设计界面)设计界面MSFlexGrid控件属于控件属于ActiveX控件,不在标控件,不在标准工具箱中。准工具箱中。执行菜单执行菜单工程工程部件部件命令,选择:命令,选择:Microsoft FlexGrid Control 6.0,将,将MSFlexGrid控件添加到工具箱中。控件添加到工具箱中。在窗体上添加一个在窗体上添加一个MSFlexGrid控件,属性:控件,属性:l名称:名称:MSG1, Font:五号、粗体:五号、粗体添加一个按钮,属性如下
42、:添加一个按钮,属性如下:l名称:名称:CmdDisplay , Caption :显示:显示脐窗涉酣填桩硝恐踏澳炮寸坑吗加咽匪辈乾漳伎或摹逞病椎眶爹誓溪呵喜第9章ADO编程第9章ADO编程40图图9-7 MSFlexGrid控件显示教师信息表控件显示教师信息表籽挚掖渍篡泊几鼓龙谓刨步缉牡筋歹篇欲遍沈捌撮续热登示赏膳眠瓣碎夯第9章ADO编程第9章ADO编程41(2)设计代码)设计代码定义一个通用定义一个通用Sub过程,名为过程,名为ShowGrid,实现将记录,实现将记录集的内容显示到集的内容显示到MSFlexGrid控件中。过程的头部定控件中。过程的头部定义为:义为:Sub ShowGrid
43、(Rs As ADODB.Recordset, MS As MSFlexGrid)ShowGrid过程有过程有两个形参两个形参,其中,其中Rs为为Recordset对象变量,对象变量,MS为为MSFlexGrid控件类控件类型变量,因此在调用该过程时,应注意实参的型变量,因此在调用该过程时,应注意实参的类型要与形参类型匹配,即传递给形参类型要与形参类型匹配,即传递给形参Rs的实的实参应该是参应该是Recordset对象变量,传递给形参对象变量,传递给形参MS的实参应该是的实参应该是MSFlexGrid控件的名称。以下控件的名称。以下是是ShowGrid过程的代码。过程的代码。谋实竞洁荐划没媚漏
44、厨峨酣挛履悟陡叼馆呵柴昌板沸源奋假司翠载误喧允第9章ADO编程第9章ADO编程42Sub ShowGrid(Rs As ADODB.Recordset, MS As MSFlexGrid)Dim j As IntegerRowNum = 1MS.Rows = RowNum 设置设置MS控件的行数控件的行数MS.Cols = Rs.Fields.Count 用记录集的字段数用记录集的字段数设置设置MSFlexGrid控件的列数控件的列数For j = 0 To Rs.Fields.Count - 1 MS.TextMatrix(0, j) = Rs.Fields(j).Name 将记录集的各字段
45、名显示到网格控件的第将记录集的各字段名显示到网格控件的第1行行Next j停宗憋处钡冶涎欲枪帆普祁鸵袜时铂舱庄暮妨母铺馒掌天挥戊硬掳孕词礼第9章ADO编程第9章ADO编程43Do While Not Rs.EOF 当没有到记录集尾时当没有到记录集尾时 RowNum = RowNum + 1 MS.Rows = RowNum 设置网格控件的行数设置网格控件的行数 For j = 0 To Rs.Fields.Count 1 MS.TextMatrix(RowNum - 1, j) = Rs.Fields(j) 将将当前行记录的各字段值显示到控件中当前行记录的各字段值显示到控件中 Next jRs
46、.MoveNext 记录指针移到下一条记录上记录指针移到下一条记录上LoopEnd Sub舵炊配戮绸墙砖眷抢逐友竟遂死具龚雁笺锈隐烬迈缸纺汐蚤抡宗狂佩艾秩第9章ADO编程第9章ADO编程44Dim cn As New ADODB.ConnectionDim rst As New ADODB.RecordsetPrivate Sub CmdDisplay_Click() Dim s As Strings = DSN=cjgl;uid=sa;pwd=sacn.Open s 打开连接打开连接cn.CursorLocation = adUseClientrst.Open Select * From 教
47、师信息表教师信息表 , cn 打开教师信息打开教师信息表产生记录集表产生记录集Call ShowGrid (rst, MSG1) 调用调用ShowGrid过程,将过程,将rst记记录集数据显示到录集数据显示到MSG1控件中控件中cn.Close 关闭数据库连接关闭数据库连接Set rst = Nothing 释放各对象变量释放各对象变量Set cmd = NothingSet cn = NothingEnd Sub妊禄线尊慢孽蔡勃瓤鸥翁燃瓦禁懂值埃会钓黔耽嘉报器纤粹倾石园片舰涂第9章ADO编程第9章ADO编程45例例9-5设计教师信息的查询窗体设计教师信息的查询窗体输输入入要要查查询询的的姓姓
48、名名,或或只只输输入入姓姓,单单击击查查询询按按钮钮,可在下边的网格控件中显示查询的结果。可在下边的网格控件中显示查询的结果。(1)设计界面)设计界面如图如图9-8所示,在窗体上添加一个所示,在窗体上添加一个MSFlexGrid控件,控件,名称:名称:MSG2, Font:五号、粗体:五号、粗体添加一个按钮,添加一个按钮,l名称:名称:CmdQuery , Caption :查询:查询添加一个文本框,名称:添加一个文本框,名称:Text1 添加一个标签,添加一个标签,l名称:名称:Label1, Caption :输入姓名:输入姓名图图9-8 查询窗体运行结果查询窗体运行结果咳祝反昼蛙舔仪量板
49、漳重礁碑撞栽鞘颈废柯抓矗奥炎秆缺东驮完虫驻歌巡第9章ADO编程第9章ADO编程46(2)设计代码)设计代码Dim cn As New ADODB.ConnectionDim rst As New ADODB.RecordsetDim cmd As New ADODB.CommandPrivate Sub CmdQuery_Click()Dim sqlstr As StringDim s As Strings = DSN=cjgl;uid=sa;pwd=sacn.Open s 打开连接打开连接cn.CursorLocation = adUseClientsqlstr = select * fro
50、m 教师信息表教师信息表 where 姓名姓名 Like & Text1 & % Set cmd.ActiveConnection = cn 创建命令创建命令cmd.CommandText = sqlstr盎婴访肘推寸惮罐城垛昂删粳消咎蝎湖描酚蜕萌植泅半怎摈窑肩芍圣恰胶第9章ADO编程第9章ADO编程47cmd.CommandType = adCmdTextSet rst = cmd.Execute 运行运行cmd命令产生记录命令产生记录集,此处也可用集,此处也可用rst.Open cmdCall ShowGrid (rst, MSG2) 调用通用过程显示记调用通用过程显示记录集,录集,Sho
51、wGrid过程代码与例过程代码与例9-4中相同中相同cn.CloseSet rst = NothingSet cmd = NothingSet cn = NothingEnd Sub运行程序,在文本框中输入姓(例如:王),单击运行程序,在文本框中输入姓(例如:王),单击查询查询按钮,结果在网格控件中显示姓王的教师信按钮,结果在网格控件中显示姓王的教师信息,如图息,如图9-8。洽茂赏抡舒纲妓烫待蔡留憾隋窜意淹翅亲琉凳镣韩秀脸页遮煮毅胃瞒绢它第9章ADO编程第9章ADO编程48本章小结本章小结ADO的编程模型,使用的编程模型,使用ADO对象编程中,介对象编程中,介绍了引用绍了引用ADO对象的方法,建立与数据源的对象的方法,建立与数据源的连接的方法,创建命令及运行命令的方法,连接的方法,创建命令及运行命令的方法,用代码访问用代码访问ADO对象的方法,最后举例讲解对象的方法,最后举例讲解了了ADO编程的应用,如浏览窗体和编辑窗体编程的应用,如浏览窗体和编辑窗体的设计、用网格控件显示数据的方法、查询的设计、用网格控件显示数据的方法、查询窗体的设计。窗体的设计。早内噎惫掩苞僧例击线味牡洋驯慷驰匣抚凤戒哆卫阴糙盐墒保羔讣锡捡于第9章ADO编程第9章ADO编程49第第9章章 结束结束排读绽纤铅茅虏均械锦禽情骋姻猜谰袭型湾恃瞬引奴袱诊珐凝磅信喝敏慷第9章ADO编程第9章ADO编程50