第十章ADO操作数据库本章的基本要求:掌握利用ADO控件操作数据库中数据的方法。掌握利用ADO控件操作数据库中数据的方法10.1数据访问对象模型数据访问接口是一个对象模型,代表访问数据的各个方面。VB中的三种数据访问接口:分别代表数据访问技术的不同发展阶段数据访问对象(DAO)远程数据对象(RDO)ActiveX数据对象(ADO)ADO接口:是为Microsoft最新和最强大的数据访问范例OLEDB而设计的,是一个便于使用的应用接口。OLEDB为任何数据源提供了高性能的访问,这些数据源包括关系和非关系型数据库、电子邮件和文件系统、文本和图形、自定义业务对象等使用ADO访问数据源,我们可以将数据保存到recordset对象中,然后用update进行更新,还可以用command对象执行SQL数据更新。使用ADO访问都需要3个步骤:首先是建立数据源连接(即创建connection对象)然后是检索数据(创建recordset对象)和操作数据。XHXMXBNLJG9901李勇男20北京9902刘晨女19江苏9903王名男18山东9904张立女19辽宁XHBHCJ9901C01929901C02859901C03889902C02909902C0380BHMCCpnoC01数据库C05C02数学C03信息系统C01C04操作系统C06C05数据结构C07C06数据处理C07C语言C0610.2使用ADO数据控件访问数据库VB中没有直接访问数据库的方法,只能借助具有数据库感知功能的数据控件或使用数据对象编程来实现对数据库的操作在VB中,将一个或几个表中的数据对象构成记录集(Recordset-类似于表,由行列组成),通过记录集对象对数据库中的数据进行操作和浏览。记录集是一种浏览数据库的工具,可以利用记录集对象选择数据。记录集对象提供了24种方法和26种属性,利用它们可以对数据库中的记录进行各种操作。10.2.1ADO数据控件ADOData控件属于ActiveX控件,具有图形控件的优势,可以用最少的代码创建应用程序添加ADOData控件:工程-部件-1、ADOData控件的常用属性属性名说明ConnectionString设置与数据源的连接信息RecordSource返回或设置Recordset对象的生成方式(Command对象、SQL语句、存储过程)CommandType设置或返回RecordSource的类型(SQL、表、存储过程)UseName指定用户名(当访问一个受保护的数据库时)PassWord指定用户密码(当访问一个受保护的数据库时)BOFAction/EOFAction当Recordset的BOF/EOF属性为True时,该数据控件执行的操作(移到第一最后记录、保存BOF/EOF状态、增加新记录)CursorLocation指定光标位置是位于客户机上还是位于服务器上Caption控件标题Mode设置对数据的操作权限参数说明Provider指定用于连接的数据源的名称FileName指定基于数据源的文件名称RemoteProvider指定打开一个客户端连接时使用的数据源的名称(仅限于远程数据服务)RemoteServer指定打开一个客户端连接时使用的服务器的路径和名称(仅限于远程数据服务)2、ConnectionString属性的参数:ConnectionString属性设定:属性值说明8-AdCmdUnknow默认值。CommandText属性中的命令类型未知RecordSouce为SQL语句1-AdCmdText将CommandText作为命令或存储过程调用的文本化定义进行计算。RecordSouce为SQL语句2-AdCmdTable将CommandText作为表格的名称进行计算。RecordSouce为表名4-AdCmdStoredProc将CommandText作为存储过程名进行计算。RecordSouce为存储过程3、Command属性的值:4、RecordSource属性取值随CommandType属性值的不同而不同:RecordSource属性设定:Mode属性值含义AdModeUnknown默认,没设置或不确定权限AdModeRead具有只读权限AdModeWrite具有只写权限AdModeReadWrite具有读/写权限AdModeShareDenyRead禁止具有读权限的其他人操作数据库AdModeShareDenyWrite禁止具有写权限的其他人操作数据库AdModeShareExclusive禁止其他人操作AdModeShareDenyName禁止具有任何权限的其他人操作5、Mode属性设置值文本框控件(TextBox)标签控件(Label)列表框控件(ListBox)组合框控件(ComboBox)复选框控件(CheckBox)图片框控件(PictureBox)数据列表框控件(Datalist)数据组合框控件(DataCombo)数据表格控件(DataGrid)ActiveX控件10.2.2数据绑定控件1、VB中提供的一些控件可实现同ADO控件相连2.数据绑定ADO控件通过属性与数据源连接,数据绑定控件也是通过属性(DataSouce、DataField)“绑定”到ADO控件上,实现与数据库的连接。用来显示Recordset中的数据将查询条件或更新数据通过结果集(Recordset)传入数据库。DataSouce:指定ADO数据控件DataField:指定该控件将要连接的数据控件中可用的数据库字段名ADOData控件:移动记录(单击箭头),修改记录(Locked=False自动保存增加新记录(EofActive)1、选定每个TextBox控件,并在其“属性”窗口中将“DataSouce”属性设置为该ADOData控件。2、将“DataField”属性设置为在该数据库中想要察看或修改的字段的名称。DataGrid控件(数据网格:ActiveX控件,用于输入大批量的数据,可同时修改或浏览多条记录DataGrid属性RecordSouces设置为该ADOData控件DataGride控件可手工设置显示字段及其顺序、格式、颜色等,还可以对显示字段重新命名(显示)10.2.3用语句设置控件属性PrivateSubForm_Load()Adodc1.CursorLocation=adUseClientAdodc1.CursorType=adOpenStaticAdodc1.LockType=adLockBatchOptimisticAdodc1.CommandType=adCmdTableAdodc1.RecordSource=s5SetDataGrid1.DataSource=Adodc1EndSub查询数据:PrivateSubCommand2_Click()Adodc1.CommandType=adCmdTextAdodc1.RecordSource=select*froms5wheresno=‘“&Text1.Text&“'andsname=‘&Text2.Text&‘andssex=‘“&Text3.Text&“‘Adodc1.RefreshEndSubAdodc1.RecordSource=execs5_select‘&Text1.Text&“',‘&Text2.Text&“',‘&Text3.Text&“‘插入数据:createprocedures5_insert(@achar(6),@bnchar(8),@cchar(2))asinserts5(sno,sname,ssex)values(@a,@b,@c)执行:execs5_insert'95001','李勇','女'删除数据:createprocedures5_delete(@achar(6),@bnchar(8),@cchar(2))asdeletes5wheresno=@aandsname=@bandssex=@c执行:execs5_insert'95001','李勇','女'存储过程:查询数据:createprocedures5_select(@achar(6),@bnchar(8),@cchar(2))asselect*froms5wheresno=@aandsname=@bandssex=@c执行:execs5_select'eee','eee','ee'修改数据:createprocedures5_update(@achar(6),@bnchar(8))asupdates5setsname=@bwheresno=@a执行:execs5_update'eee','ee'存储过程:PrivateSubCommand1_Click()Adodc1.RecordSource=execs5_insert'&Text1.Text&','&Text2.Text&','&Text3.Text&'Adodc1.RefreshEndSub注:ADO控件:如果sql是delete,update,insert则关闭记录集Adodc1.Recordset.ActiveConnection.Execute=execs5_insert'&Text1.Text&','&Text2.Text&','&Text3.Text&'插入数据:PrivateSubCommand4_Click()Adodc1.Recordset.ActiveConnection.Execute=execs5_update'&Text1.Text&','&Text2.Text&'Adodc1.RefreshEndSub插入数据:PrivateSubCommand3_Click()Adodc1.Recordset.ActiveConnection.Execute=execs5_delete'&Text1.Text&','&Text2.Text&','&Text3.Text&''Adodc1.RecordSource=execs5_delete'&Text1.Text&','&Text2.Text&','&Text3.Text&'Adodc1.RefreshEndSub删除数据:ADOData控件访问数据库的方法简单易学,并且在不编写代码的情况下能实现对数据库的访问。但这种方式是在设计时完成,灵活性较差,往往在深入编程时不能满足要求(如运行时根据输入条件对数据进行有选择的显示、修改等)使用ADO对象访问数据库即用编程的方法对数据库进行访问。VB提供了ADO对象模型,该对象提供了访问数据库所需的全部属性和方法。ADO控件和ADO对象模型这两种方法并不互斥,两者可同时使用。10.3ADO对象访问数据库1、ADO对象模型ADO对象模型定义了一个可编程的对象集合,包含以下几个主要的数据访问对象:对象名称说明Connection通过“连接”可使应用程序访问数据库Command通过连接发出的“命令”操作数据源Recordset描述来自数据表或命令执行结果的记录的集合Paramete”参数”是命令所需要的变量部分Fields”字段”用于描述记录集中某一个列的信息Error包含数据读取过程中的错误信息Property每个ADO对象都有一组唯一的属性来描述或控制对象的行为Connection对象的常用属性和方法Connection:是交换数据所必须的环境,通过”连接“可使应用程序访问数据库。该对象用于指定专门的提供者和任意参数名称说明ConnectionString属性设置到数据源的连接信息Open方法打开到数据源的连接Execute方法执行指定的命令,返回一个Recordset对象Cancel方法取消Open或Execute方法的调用Close方法关闭打开的Connection对象Command:描述将对数据源执行的命令。通过已建立的连接发出的命令,能以各种方式来操作数据源(检索、添加、删除、更新等)名称说明ActiveConnect