使用ADO操作数据库.ppt

上传人:牧羊曲112 文档编号:4938071 上传时间:2023-05-24 格式:PPT 页数:69 大小:362.50KB
返回 下载 相关 举报
使用ADO操作数据库.ppt_第1页
第1页 / 共69页
使用ADO操作数据库.ppt_第2页
第2页 / 共69页
使用ADO操作数据库.ppt_第3页
第3页 / 共69页
使用ADO操作数据库.ppt_第4页
第4页 / 共69页
使用ADO操作数据库.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《使用ADO操作数据库.ppt》由会员分享,可在线阅读,更多相关《使用ADO操作数据库.ppt(69页珍藏版)》请在三一办公上搜索。

1、第十章 ADO操作数据库,本章的基本要求:掌握利用ADO控件操作数据库中数据的方法。掌握利用ADO控件操作数据库中数据的方法,10.1 数据访问对象模型,数据访问接口是一个对象模型,代表访问数据的各个方面。VB中的三种数据访问接口:分别代表数据访问技术的不同发展阶段数据访问对象(DAO)远程数据对象(RDO)ActiveX数据对象(ADO),ADO接口:是为Microsoft最新和最强大的数据访问范例OLE DB而设计的,是一个便于使用的应用接口。OLE DB为任何数据源提供了高性能的访问,这些数据源包括关系和非关系型数据库、电子邮件和文件系统、文本和图形、自定义业务对象等,使用ADO访问数据

2、源,我们可以将数据保存到recordset对象中,然后用update进行更新,还可以用command对象执行SQL 数据更新。使用ADO访问都需要3个步骤:首先是建立数据源连接(即创建connection对象)然后是检索数据(创建recordset对象)和操作数据。,10.2 使用ADO数据控件访问数据库,VB中没有直接访问数据库的方法,只能借助具有数据库感知功能的数据控件或使用数据对象编程来实现对数据库的操作在VB中,将一个或几个表中的数据对象构成记录集(Recordset类似于表,由行列组成),通过记录集对象对数据库中的数据进行操作和浏览。记录集是一种浏览数据库的工具,可以利用记录集对象选

3、择数据。记录集对象提供了24种方法和26种属性,利用它们可以对数据库中的记录进行各种操作。,10.2.1 ADO数据控件,ADO Data控件属于ActiveX控件,具有图形控件的优势,可以用最少的代码创建应用程序添加ADO Data控件:工程-部件-,1、ADO Data控件的常用属性,2、ConnectionString属性的参数:,ConnectionString属性设定:,3、Command属性的值:,4、RecordSource属性取值随CommandType属性值的不同而不同:,RecordSource属性设定:,5、Mode 属性设置值,文本框控件(TextBox)标签控件(La

4、bel)列表框控件(ListBox)组合框控件(ComboBox)复选框控件(CheckBox)图片框控件(PictureBox)数据列表框控件(Datalist)数据组合框控件(DataCombo)数据表格控件(DataGrid),ActiveX控件,10.2.2 数据绑定控件,1、VB中提供的一些控件可实现同ADO控件相连,2.数据绑定,ADO控件通过属性与数据源连接,数据绑定控件也是通过属性(DataSouce、DataField)“绑定”到ADO控件上,实现与数据库的连接。用来显示Recordset中的数据将查询条件或更新数据通过结果集(Recordset)传入数据库。DataSouc

5、e:指定ADO数据控件DataField:指定该控件将要连接的数据控件中可用的数据库字段名,ADO Data控件:移动记录(单击箭头),修改记录(Locked=False 自动保存增加新记录(EofActive),1、选定每个 TextBox 控件,并在其“属性”窗口中将“DataSouce”属性设置为该 ADO Data 控件。2、将“DataField”属性设置为在该数据库中想要察看或修改的字段的名称。,DataGrid控件(数据网格:ActiveX控件,用于输入大批量的数据,可同时修改或浏览多条记录DataGrid 属性 RecordSouces设置为该ADO Data控件,DataGr

6、ide控件可手工设置显示字段及其顺序、格式、颜色等,还可以对显示字段重新命名(显示),10.2.3 用语句设置控件属性,Private Sub Form_Load()Adodc1.CursorLocation=adUseClientAdodc1.CursorType=adOpenStaticAdodc1.LockType=adLockBatchOptimisticAdodc1.CommandType=adCmdTableAdodc1.RecordSource=s5Set DataGrid1.DataSource=Adodc1End Sub,查询数据:,Private Sub Command2_

7、Click()Adodc1.CommandType=adCmdText Adodc1.RecordSource=select*from s5 where sno=“&Text1.Text&“and sname=&Text2.Text&and ssex=“&Text3.Text&“Adodc1.RefreshEnd SubAdodc1.RecordSource=exec s5_select&Text1.Text&“,&Text2.Text&“,&Text3.Text&“,插入数据:create procedure s5_insert(a char(6),b nchar(8),c char(2)a

8、s insert s5(sno,sname,ssex)values(a,b,c)执行:exec s5_insert 95001,李勇,女删除数据:create procedure s5_delete(a char(6),b nchar(8),c char(2)as delete s5 where sno=a and sname=b and ssex=c执行:exec s5_insert 95001,李勇,女,存储过程:,查询数据:create procedure s5_select(a char(6),b nchar(8),c char(2)as select*from s5 where sn

9、o=a and sname=b and ssex=c执行:exec s5_select eee,eee,ee修改数据:create procedure s5_update(a char(6),b nchar(8)as update s5 set sname=b where sno=a 执行:exec s5_update eee,ee,存储过程:,Private Sub Command1_Click()Adodc1.RecordSource=exec s5_insert&Text1.Text&,&Text2.Text&,&Text3.Text&Adodc1.RefreshEnd Sub注:ADO

10、控件:如果sql是delete,update,insert则关闭记录集Adodc1.Recordset.ActiveConnection.Execute=exec s5_insert&Text1.Text&,&Text2.Text&,&Text3.Text&,插入数据:,Private Sub Command4_Click()Adodc1.Recordset.ActiveConnection.Execute=exec s5_update&Text1.Text&,&Text2.Text&Adodc1.RefreshEnd Sub,插入数据:,Private Sub Command3_Click(

11、)Adodc1.Recordset.ActiveConnection.Execute=exec s5_delete&Text1.Text&,&Text2.Text&,&Text3.Text&Adodc1.RecordSource=exec s5_delete&Text1.Text&,&Text2.Text&,&Text3.Text&Adodc1.RefreshEnd Sub,删除数据:,ADO Data控件访问数据库的方法简单易学,并且在不编写代码的情况下能实现对数据库的访问。但这种方式是在设计时完成,灵活性较差,往往在深入编程时不能满足要求(如运行时根据输入条件对数据进行有选择的显示、修改等

12、)使用ADO对象访问数据库即用编程的方法对数据库进行访问。VB提供了ADO对象模型,该对象提供了访问数据库所需的全部属性和方法。ADO控件和ADO对象模型这两种方法并不互斥,两者可同时使用。,10.3 ADO 对象访问数据库,1、ADO对象模型ADO对象模型定义了一个可编程的对象集合,包含以下几个主要的数据访问对象:,Connection对象的常用属性和方法,Connection:是交换数据所必须的环境,通过”连接“可使应用程序访问数据库。该对象用于指定专门的提供者和任意参数,Command:描述将对数据源执行的命令。通过已建立的连接发出的命令,能以各种方式来操作数据源(检索、添加、删除、更新

13、等),Command对象的常用属性和方法,Recordset对象的常用属性,Recordset对象的常用方法,Connection、Command和Recordset对象为一般用途对象,可以创建这些对象并使用它们访问数据库ADO对象模型访问数据库的步骤:1)声明对象变量(Connection、Recordset,Command等)2)连接数据源(connection)3)执行命令建立记录集(Command、connection、recordset)4)使用结果集5)中断连接,(一)声明对象变量:Dim Cn As New ADODB.ConnectionDim RS As New ADODB.

14、RecordsetDim Com As New ADODB.Command建立ADO对象:Set Cn=New ADODB.ConnectionSet Rs=New ADODB.RecordsetSet Com=New ADODB.Command,Connection.Open ConnectionString,UserID,PassWord,OpenOptionsConnectionString:包含建立到数据源的全部信息UserID:可选项。建立连接的用户名PassWord:可选项。建立连接的用户密码OpenOptions:可选项,如果设置adConnectAsync,则异步打开连接,(二

15、)连接数据源:,ConStr=Provider=Microsoft.Jet.OLEDB.3.51;_ Data Source=D:rsgl.mdb”ConStr=Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=HD“constr=DSN=school;User ID=sa;PWd=123456Cn.ConnectionString=ConStrCn.Open,1)Recordset对象的 Open方法 Recordset.Open Souce,ActiveConnection,CursorType,LockType,OptionsSource:合法

16、的Connection对象变量名、SQL语句、表名、存储过程名或保存记录集的文件名ActiveConnection可选。指定合法的 Connection 对象变量名;或包含 ConnectionString参数的字符串,。CursorType可选。确定打开 Recordset 时应该使用的游标类型。(Static、Dynamic、Forward-Only、KeysetLockType可选。确定提供者打开 Recordset 时应该使用的锁定类型,(三)打开记录集,Options,LockType,Set Rs=New ADODB.RecordsetRs.CursorLocation=adUse

17、ClientRs.CursorType=adOpenStaticRs.LockType=adLockBatchOptimisticRs.Open 职工工资,CnRs.Open 职工工资,Cn,adOpenStatic,adLockBatchOptimistic,Public Com As New ADODB.Command 声明ADO对象Public CnStr As StringPublic SqlStr As StringSet Cn=New ADODB.Connection 创建ADO对象:Set RS=New ADODB.RecordsetSet Com=New ADODB.Comma

18、ndConStr=“Provider=SQLOLEDB.1;Persist Security 建立连接Info=False;User ID=sa;PWd=123456;Initial Catalog=school;Data Source=HD-ICHU1M8LWH8YCn.ConnectionString=ConStrCn.OpenSqlStr=select*from s5“打开记录集Set RS=New ADODB.RecordsetSet RS.ActiveConnection=CnRS.CursorLocation=adUseClientRS.CursorType=adOpenStati

19、cRS.LockType=adLockBatchOptimisticRS.Open SqlStr,函数:,Public Function ExeSql(ByVal sql As String)As adodb.RecordsetSet RS=New adodb.RecordsetSet RS.ActiveConnection=CnRS.CursorLocation=adUseClientRS.CursorType=adOpenStaticRS.LockType=adLockBatchOptimisticRS.Open SqlStrSet ExeSql=RSSet RS=NothingEnd F

20、unction,调用:Private Sub Form_Load()SqlStr=select*from s5Set rs1=ExeSql(SqlStr)Set DataGrid1.DataSource=rs1End Sub,2)Connection对象的 Execute方法Set Recordset=Connection.Execute(CommandType,Recordsaffected,options)CommandType:包含要执行的 SQL命令、表名、存储过程名或指定文本Recordsaffected:可选。返回操作影响的记录数Set Rs=Cn.Execute(“select*

21、from student”),Set Recordset=Connection.Execute(Recordsaffected,Parameters,options),Command 对象,Command 对象用于想已建立连接发出命令,通常是SQL命令、存储过程名使用Command对象查询数据库并返回Recordset对象中的记录Command对象提供了更专门的运行方式和参数传递,Dim cmd as ADOdb.CommandSet cmd=new ADOmandCmd.acttiveConnection=CNCommandType=adCmdStoredProcCommandText=“a

22、vg_proc”Rs=Cmd.Execute或:CommandType=adCmdTextCommandText=“select*from student”Rs=Cmd.Execute,建立记录集的方法,1、方法一 RecordSet对象:Set RS.ActiveConnection=Cn RS.CursorLocation=adUseClient RS.CursorType=adOpenStatic RS.LockType=adLockBatchOptimistic RS.Open SqlStr2、方法二 Connection对象 Set RS=Cn.Execute(SqlStr)3、方法

23、三 Command 对象 Com.ActiveConnection=Cn Com.CommandType=adCmdText Com.CommandText=SqlStr Set RS=Com.Execute,SqlStr=“select*from s5“或 SqlStr=“exec 存储过程名“,非网格记录集,rs.open sql,conn:如果sql是delete,update,insert则会返回一个关闭的记录集,插入:sqlstr=exec s5_insert&Text1.Text&,&Text2.Text&,&Text3.Text&Set rs1=ExeSql(sqlstr)查询:

24、sqlstr=select*from s5 where sno=&Text1.Text&and sname=&Text2.Text&and ssex=&Text3.Text&Set rs1=ExeSql(sqlstr)Set DataGrid1.DataSource=rs1删除:sqlstr=exec s5_delete&Text1.Text&,&Text2.Text&,&Text3.Text&Set rs1=ExeSql(sqlstr)修改sqlstr=exec s5_update&Text1.Text&,&Text2.Text&Set rs1=ExeSql(sqlstr)查看:sqlstr

25、=select*from s5Set rs1=ExeSql(sqlstr)Set DataGrid1.DataSource=rs1,(四)使用结果集将结果集看作一个逻辑表,可以将其与数据感知控件绑定,并可用结果集对象的Move 方法、Find方法、Seek方法、AddNew、Delete、Update方法进行记录定位、添加、删除、修改等操作,记录定位,Move 方法:将记录集指针移到指定位置MoveFirstMoveNextMoveLastMovePreviousMoven,Start:将记录集当前指针向前或向后移n个记录,Find方法:用于定位满足特定条件的记录(动态集、快照)FindFir

26、st:从记录集的顶部开始查找满足条件第一条的记录FindNext:从记录集的当前位置开始查找满足条件下一条的记录(向下查找)FindLast:从记录集的底部开始查找满足条件的最后一条记录FindPrevious:从记录集的当前位置开始查找满足条件上一条的记录(向上查找),Seek方法:对数据表中的某个字段通过条件判断给记录定位,要求Seek的条件与索引关键字相匹配记录集对象.Seek,Key1,Key2 Rs.index=“部门”RS.Seek“=”,”教务处”,1.查询记录,声明对象:Dim Cn As New ADODB.ConnectionDim Rs As New ADODB.Reco

27、rdsetDim ConStr As String建立连接:ConStr=Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=HD“Cn.Open ConStr打开结果集:Rs.CursorLocation=adUseClientRs.CursorType=adOpenStaticRs.LockType=adLockBatchOptimisticRs.Open 职工工资,Cn,adCmdTable,绑定数据:Ft()For i=0 To-1Text1(i).Text=Rs.Fields(i)Next,n=IndexSelect Case nCase 0

28、Rs.MoveFirstCase 1Rs.MovePreviousIf Rs.BOF Then Rs.MoveFirstCase 2Rs.MoveNextIf Rs.EOF Then Rs.MoveLastCase 3Rs.MoveLastEnd Select Ft,记录定位:移动结果集指针,显示当前记录,For i=0 To Rs.RecordCount-1Combo1.AddItem Rs.Fields(2)Rs.MoveNextNext,将结果集中第三个字段(姓名)添加到组合框中,,n=Combo1.ListIndexRs.MoveFirstFor i=0 To Rs.RecordCou

29、nt-1 If Rs.Fields(2)=Combo1.List(n)Then Exit For Else Rs.MoveNext End IfNextFt,Rs.Move n,在组合框中选择姓名,移动结果集指针到该记录,并在文本框中显示,ss=姓名=&“&Combo1.List(n)&Rs.MoveFirstRs.Find ss,例:,ActivateX控件 DataGrid,鼠标右键编辑 DataGrid,建立连接:ConStr=Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=HD“Cn.Open ConStr打开结果集:Rs.CursorLo

30、cation=adUseClientRs.CursorType=adOpenStaticRs.LockType=adLockBatchOptimisticRs.Open 职工工资,Cn,adCmdTable绑定数据:Set DataGrid1.DataSource=Rs,Rs.Sort=编号,Rs.Open select distinct(部门)from 职工工资,Cn,_adCmdTextCombo1.AddItem 全体Rs.MoveFirstFor i=0 To Rs.RecordCount-1Combo1.AddItem Rs.Fields(0)Rs.MoveNextNextRs.Cl

31、ose,将结果集中第二个字段(部门)添加到组合框中,,tt=Combo1.TextIf tt=全体 Then Rs.Filter=adFilterNoneElse Rs.Filter=部门=&tt&End IfRs.Resync adAffectAllChaptersSet DataGrid1.DataSource=Rs,在组合框中选择部门,在数据表格中筛选并显示该部门的记录,Rs.Filter=部门=院办or 部门=教务处or 部门=总务处,Rs.addnewAddnew.show,添加记录:,添加确定:For i=0 To-1Rs.Fields(i)=Text1(i).TextNextRs

32、.UpdateUnload Me添加取消:Rs.CancelUpdateUnload Me,Private Sub Text1_LostFocus(Index As Integer)If Text1(0).Text=Then Text1(0).SetFocus ElseIf Text1(1).Text=Then Text1(1).SetFocus Else:If Text1(2).Text=Then Text1(2).SetFocusEnd IfEnd Sub,添加时某些字段不能为空值:,aa=MsgBox(是否删除该条记录?&编号=&Rs!编号&姓名=&Rs!姓名,1+48+0,删除记录)I

33、f aa=1 Then Rs.Delete adAffectCurrent,删除结果集中指针所指的当前记录:,显示当前记录:For i=0 To-1Text1(i).Text=Rs.Fields(i)Next确定修改:For i=0 To-1Rs.Fields(i)=Text1(i).TextNextRs.UpdateUnload Me,修改记录:,公共模块中定义Public Cn As New ADODB.ConnectionPublic Rs As New ADODB.RecordsetPublic ConStr As StringPublic k As IntegerPublic ff

34、As String,Set cn=Server.CreateObject(ADODB.Connection)StrCnn=Provider=sqloledb;User ID=sa;Password=;Initial Catalog=bsh;Data Source=127.0.0.1cn.Open StrCnnset rs=server.CreateObject(adodb.recordset)验证用户名sql=select*from users where username=&trim(request.Form(username)&rs.open sql,cn,0,1,set rs=server.CreateObject(adodb.recordset)rs.open select username,useremail from user where username=“&trim(request.form(username)&“or useremail=“&trim(request.form(useremail)&“,conn,1,1if not rs.eof and not rs.bof thencall usererr()rs.closeset rs=nothingelsers.close,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号