已阅读5页,还剩158页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,1 ADO对象模型 ADO(ActiveX Data Object)活动数据访问接口是Microsoft处理数据库信息的最新技术。采用OLE DB的数据访问模式,是数据访问对象DAO、远程数据对象RDO和开放数据库互连ODBC三种方式的扩展。 OLE对象链接使能,具有链接和嵌入对象的功能。 ADO对象模型定义了一个可编程的分层对象集合,主要由三个对象成员Connection、Command和Recordset对象,以及几个集合对象Errors、Parameters和Fields等所组成。,6.5 ADO数据控件,6.5 ADO数据控件,图6.13 ADO对象模型,6.5 ADO数据控件,6.5 ADO数据控件,2 使用ADO数据控件 使用ADO数据控件,必须先通过“工程 | 部件“菜单命令选项。,6.5 ADO数据控件,选择“Microsoft ADO Data Control 6.0(OLEDB)“,将ADO数据控件 添加到工具箱,在窗体中使用ADO 数据控件的方式与 Data控件相似,使 用ADO数据控件的 基本属性,可以快 速地创建与数据库 的连接。,在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。引用方式是执行“工程“菜单的“引用“命令,启动引用对话框,在清单中选取“MicrosoftActiveX Data Objects 2.0 Library“选项。,6.5 ADO数据控件,进入,1)ADO数据控件的基本属性 ConnectionString属性 ADO控件没有DatabaseName属性,它使用ConnectionString属性与数据库建立连接。该属性包含了用于与数据源建立连接的相关信息。,6.5 ADO数据控件,6.5 ADO数据控件,RecordSource属性 该属性确定可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中单个表名、一个存储查询或者是使用SQL查询语言的查询字符串。,ConnectionTimeout属性 用于数据连接的超时设置,若在指定时间内连接不成功显示超时信息。 MaxRecords属性 定义从一个查询中最多能返回的记录数。,6.5 ADO数据控件,2) ADO数据控件的方法和事件 ADO数据控件的方法和事件与Data控件的方法和事件完全一样。 3)设置ADO数据控件的属性 下面通过使用ADO数据控件连接Student.mdb数据库来说明ADO数据控件属性的设置。,6.5 ADO数据控件,步骤1:在窗体上放置ADO数据控件,控件名采用默认名“Adodcl“。,6.5 ADO数据控件,步骤2:在ADO控件按鼠标右键,选择ADO属性时,弹出“属性页“对话框。,6.5 ADO数据控件,允许通过三种不同 的方式连接数据源,表示通过一个连 接文件来完成,使用ODBC数据资源名称 可以通过 下拉式列表框,选择某个创建好 的数据源名称(DSN),作为数据来 源对远程数据库进行控制,通过选项设置自动产生连接字符串,步骤3:采用“使用连接字符串“方式连接数据源。,6.5 ADO数据控件,单击“生成“按钮,打开“数据链接属性“对话框,步骤3:采用“使用连接字符串“方式连接数据源。,6.5 ADO数据控件,在“提供程序“选项内选择一个合适的OLE DB 数据源,Student.mdb是Access数据库,选择 “Microsoft Jet 3.51 OLE DB Provider“ 选项。,单击“下步“按钮,步骤3:采用“使用连接字符串“方式连接数据源。,6.5 ADO数据控件,在“连接“选项内, 指定数据库文件, Student.mdb,为保证连接有效,可单 击“连接“选项卡右下方 的“测试连接“按钮,如 果测试成功则关闭数据 链接属性页,步骤4:在记录源属性页对话框。,6.5 ADO数据控件,在“命令类型“下 拉列表框中选择 “2adCmdTable“ 选项,在“表或存储过程名称“ 下拉式列表框中选择 Student.mdb数据库中 的“基本情况“表,完成ADO数据控件的连接工作。,进入,3 ADO数据控件上新增绑定控件的使用 和ADO数据控件的绑定控件属性主要包括: DataSource,DataField,DataMember,DataFormat DataSource和DataField的连接功能增强了; DataMember属性允许处理多个数据集,从数据供应程序提供的几个数据成员中返回或设置一个特定的数据成员; DataFormat属性用于指定数据内容的显示格式。,6.5 ADO数据控件,6.5 ADO数据控件,例6.6 使用ADO数据控件和DataGrid数据网格控件浏览数据库Student.mdb,并使之具有编辑功能。 下图为具有增、删、改功能的数据网格绑定。,6.5 ADO数据控件,标有号的记录 行表示允许增 加新记录,进入,DataGrid控件使用方法: 需通过“工程|部件“菜单命令选择DataGrid控件,,6.5 ADO数据控件,将DataGrid 控件添加 到工具箱,DataGrid控件使用方法: 将DataGrid控件放置到窗体上。 设置DataGrid网格控件的DataSource属性为Adodc1,实现DataGrid1绑定到数据控件Adodc1。,6.5 ADO数据控件,DataGrid控件允许用户同时浏览或修改多个记录的数据。,6.5 ADO数据控件,AllowAddNew(增) AllowDelete(删) AllowUpdate(改),修改功能通过DataGrid属 性设置实现,可以设置的 属性为:,进入,添加DataGrid网格上显示的字段,可用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“检索字段“选项。Visual Basic提示是否替换现有的网格布局,单击“是“按钮就可将表中的字段装载到DataGrid控件中。,6.5 ADO数据控件,用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“编辑“选项,进入数据网格字段布局的编辑状态,此时,当鼠标指在字段名上时,鼠标指针变成黑色向下箭头。,6.5 ADO数据控件,在该窗体点击鼠标 右键,选择属性选项,可修改字段标题或 字段的显示宽度。,进入,必须使用ADO数据控件进行绑定的控件:,6.5 ADO数据控件,DataList控件 DataSource, DataFiled RowSource, ListFiled,必须使用ADO数据控件进行绑定的控件:,6.5 ADO数据控件,DataCombo控件 DataSource, DataFiled RowSource, ListFiled,必须使用ADO数据控件进行绑定的控件:,6.5 ADO数据控件,DataReport控件,在“工程”菜单上,单击“添加 Data Enviroment”向工程中添加设计器。 如果设计器没有在“工程“菜单上列出,则单击“部件“。单击“设计器“选项卡。并单击“数据环境“把设计器添加到菜单上。,6.5 ADO数据控件,DataReport控件,点击鼠标右键,出现 菜单,选择属性,出现 “数据链接属性“对话 框,选择“Microsoft Jet 3.51 OLE DB Provider“,这是为 访问 Jet 数据库选择正确 的 OLE DB 提供商,单击下一步,6.5 ADO数据控件,DataReport控件,指定数据库,测试连接,6.5 ADO数据控件,DataReport控件,点击鼠标右键,出现菜 单,选择“添加子命令“, 出现Command属性页,选择表,选择“基本情况表“,6.5 ADO数据控件,DataReport控件,选择表,点击“关联“,选择“学生成绩表“,点击鼠标右键,出现菜 单,选择“添加子命令“, 出现Command属性页,6.5 ADO数据控件,DataReport控件,父命令来自Command1,两个表通过学号相关联,6.5 ADO数据控件,DataReport控件,在“工程”菜单上,单击“添加 Data Report” 如果不在“工程”菜单上,先选择工程,部件,设计器。添加Data Report。,6.5 ADO数据控件,DataReport工作区,资源管理器列表,DataPeport需要绑定两个属性,6.5 ADO数据控件,点击鼠标右键,选 择插入文本框,点击鼠标右键,选择插入标签,标签CAPTION=学生成绩表,点击鼠标右键,选择插入标签,文本框两个属性绑定设置,6.5 ADO数据控件,DataReport控件,在窗体中添加一个Command控件,并填写代码如下: Private Sub Command1_Click() DataReport1.Show End Sub 点击Command控件则可显示报表,DataReport1.Show,进入,必须使用ADO数据控件进行绑定的控件:,6.5 ADO数据控件,MSChart控件 DataSource,进入,基本情况表,SQL中使用SELECT语句实现查询。 Data控件的RecordSource属性可以是数据表名; RecordSource属性可以是数据表中的某些行或多个数据表中的数据组合。直接在Data控件的RecordSource属性栏中输入SQL,或在代码中通过SQL语句将选择的记录集赋给数据控件的RecordSource属性。,6.6 VB中的SQL实现,6.6 VB中SQL的实现,例6.8 使用SQL语句实现查找功能,显示某专业的学生记录。 使用SQL语句查询,命令按钮Command5_Click事件代码如下:,6.6 VB中的SQL实现,进入,6.6 VB中的SQL实现,Private Sub Command5_Click() Dim mzy As String mzy = InputBox$(“请输入专业“, “查找窗“) Data1.RecordSource = “Select * From 基本_情况 Where 专业 = “ & mzy & “ Data1.Refresh If Data1.Recordset.EOF Then MsgBox “无此专业!“, , “提示“ Data1.RecordSource = “基本情况“ Data1.Refresh End If End Sub,短语指定数据来源; “Where 专业 = “ & mzy & “ 短语构成查询条件, 用于过滤表中的记录,对于未查找到记录情况的处理,激活RecordSource的变化,6.6 VB中的SQL实现,Private Sub Command5_Click() Dim mzy As String mzy = InputBox$(“请输入专业“, “查找窗“) Data1.RecordSource = “Select * From 基本_情况 Where 专业 = “ & mzy & “ Data1.Refresh If Data1.Recordset.EOF Then MsgBox “无此专业!“, , “提示“ Data1.RecordSource = “基本情况“ Data1.Refresh End If End Sub,如果使用模糊查询语句可改写如上,专业 like *“ & mzy & “*“,进入,例6.9 用SQL语句从Student.mdb数据库的两个数据表中选择数据构成记录集,并通过数据控件浏览记录集。,6.6 VB中的SQL实现,进入,Data控件的属性设置 DatabaseName属性:Student.mdb, RecordSource属性:空缺 各文本框的属性DataSource=Data1,DataField属性分别设置为学号、姓名、课程、成绩,而照片字段绑定图形框。 本例要求从两个实表中选择字段构成虚表。 从基本情况中选择学生的学号、姓名、照片, 从学生成绩表中选择该学生的课程和成绩来构成记录集。,6.6 VB中的SQL实现,实现方法:在Form_ Load事件中使用SQL语句,6.6 VB中的SQL实现,Private Sub Form_Load() Data1.RecordSource = “Select 基本情况.学号,基本情况.姓名,基本情况.照片,学生成绩表.课程,学生成绩表.成绩 From 学生成绩表,基本情况 Where 学生成绩表.学号=基本情况.学号“ End Sub,进入,例6.10 用SQL指令按专业统计Student.mdb数据库中各专业的人数,并统计平均成绩前5名的学生,要求按下图所示形式输出。,6.6 VB中的SQL实现,进入,窗体中的控件为Data控件和网格控件MSFlexGrid1。 Data1的DatabaseName属性:Student.mdb; RecordSource属性:空缺 网格控件的DataSource:Data1。 分组查询:为了统计各专业的人数,对基本情况表内的记录按专业分组。使用“Group By专业“语句,将同一专业的所有记录合为一组新记录。 命名别名:要记录统计结果,需要构造一个新的输出字段,使用SQL的统计函数Count()作为输出字段,它按专业分组创建统计值。由于在表中没有表示该内容的字段名,可用As短语命名一个别名,6.6 VB中的SQL实现,“按专业统计人数“按钮的指令代码为:,6.6 VB中的SQL实现,Private Sub Command1_Click() Data1.RecordSource = “Select 专业,Count(*) As 人数 From 基本情况 Group By 专业“ Data1.Refresh End Sub,如需要 “按平均成绩统计前5名“ 按钮指令代码为:,6.6 VB中的SQL实现,Private Sub Command2_Click() Data1.RecordSource = “Select Top 5 学号,Avg(成绩) As 平均成绩 From 学生成绩表 Group By 学号 Order By Avg(成绩) Desc“ Data1.Refresh End Sub,Avg(成绩)计算该学生的平均成绩,“Order By Avg(成绩) Desc“按平均成绩的降序排列数据,“Group By 学号“将同一学生的 各门课程的记录合并成一条记录,“Top 5“短语返回最前面的5条记录,“恢复原表内容“按钮的指令代码为:,6.6 VB中的SQL实现,Private Sub Command3_Click() Data1.RecordSource = “基本情况“ Data1.Refresh End Sub,进入,例6.11使用ADO数据控件,用SQL语句从Student.mdb数据库的两个数据表中选择数据构成记录集。,6.6 VB中的SQL实现,进入,使用ADO数据控件Adodc1; 各文本框的Datasource=Adodc1,DataField属性分别设置为学号、姓名、课程、成绩,而字段照片绑定图形框。 ADO数据控件的数据源采用连接字符串的方式连接; 属性设置为与数据源连接的相关信息,数据链接属性设置与Student.mdb的数据连接。,6.6 VB中的SQL实现,记录源设置如下,6.6 VB中的SQL实现,select 学生成绩表.*,基本情况.姓名,基本情况.照片 from 学生成绩表,基本情况 where 学生成绩表.学号=基本情况.学号,进入,例6.12 设计一个窗体,计算Student.mdb数据库内学生成绩表中每个学生的平均成绩,产生姓名、平均成绩和最低成绩三项数据,按平均成绩降序排列数据,并用该数据作图。,6.6 VB中的SQL实现,进入,绘制图表使用MsChart。MsChart控件需要通过“工程 | 部件“命令,将MSChart控件添加到工具箱。 MSChart1的DataSource绑定:Adodc1 将Adodcl的RecordSource属性设置为SQL语句:,6.6 VB中的SQL实现,“Select 基本情况.姓名,Avg(成绩) As 平均成绩,Min(成绩) As 最低成绩 From 学生成绩表,基本情况 Where 学生成绩表.学号=基本情况.学号 Group By 姓名 Order By Avg(成绩) Desc“,学生成绩表中没有平均成绩和最低成绩这两项数据,在SELECT子句中使用统计函数Avg ()和Min()产生; 学生成绩表中没有姓名字段,故需要多表查询,通过条件“基本情况.学号=学生成绩表.学号“从基本情况表获取。 “Group By 姓名“可将同一学生的记录合并成一条新记录。,6.6 VB中的SQL实现,在CS结构中用ODBC与数据库连接和数据操作。 例6.13 使用ADO数据控件和ODBC 技术,设计一个简单窗体,显示Student.mdb数据库的基本情况表。,6.7 VB中使用ODBC,6.7 VB中使用ODBC,进入,步骤1:在窗体上放置ADO数据控件,控件名采用默认名“Adodcl“。,6.5 ADO数据控件,步骤2:在ADO控件按鼠标右键,选择ADO属性时,弹出“属性页“对话框。,6.5 ADO数据控件,使用ODBC数据资源名称 可以通过 下拉式列表框,选择某个创建好 的数据源名称(DSN),作为数据来 源对远程数据库进行控制,步骤3:在创建新数据源对话框,选择数据源,6.5 ADO数据控件,只有创建者能访 问的数据库文件,登录该机器的任何用户 都能访问的数据库文件,所有用户均可以访 问的数据库文件,数据源名就是系统知道的数据库文件名。数据源名 只要生成一次,此后任何应用程序都可以使用。如 果系统中没有数据源名,则需生成新的数据源名,步骤4:在创建新数据源对话框,选择驱动器,6.5 ADO数据控件,选择Microsoft Access Driver,步骤5:在“属性页“对话框,选择使用ODBC数据资源名称,6.5 ADO数据控件,使用ODBC数据资源名称 可以通过 下拉式列表框,选择某个创建好 的数据源名称(DSN),作为数据来 源对远程数据库进行控制,6.7 VB中使用ODBC,步骤6:单击“完成”按钮,生成数据源。指定的Access数据库赋予新建的数据源。出现在“ODBC Microsoft Access 安装“窗口中,操作步骤如下:,设置数据源名为Student1,指定一个Access数据库Student.mdb 赋予新建的数据源Student1,步骤6:展开下拉清单,并选择student1数据源。,6.7 VB中使用ODBC,student1数据源已经注册到系统上, 不必再次生成。它会自动出现在ADO 数据控件属性页的“使用ODBC数据资 源名称“下拉清单中,进入,例6.14 ADO数据控件使用自己的高级约束数据控件,即DataList和DataCombo控件。,6.7 VB中使用ODBC,进入,DataList,DataCombo,DataCombo控件属性设置 DataSourceAdodc1, DataFiled出生年月 RowSource= Adodc1,ListFiled出生年月 DataList控件属性设置 RowSource= Adodc1,ListField=学号。,6.7 VB中使用ODBC,DataList控件 vRowSource, ListFiled,DataCombo控件 DataSource,DataFiled,ListFiled,设置下拉菜单中的字段,设置文本中显示的字段,DataList控件中所选的学号对约束数据控件没有影响。如要在DataList清单中每次选择另一学号时,同时移动ADO数据控件,需要加入一些代码:,6.7 VB中使用ODBC,Private Sub DataList1_Click() Adodc1.Recordset.Bookmark =_ DataList1.SelectedItem End Sub,返回一个值,包含 DataList 控件 中选中的记录的书签。,6.5.5 ADO对象编程,6.5.5 ADO对象编程,一 .ADO对象 (一)ADO对象介绍 ADO是ActiveX Data Obiect的缩写,是建立在OLE DB之上的高层数据库访问技术。ADO被设计用来同新的数据访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data Access)。OLE DB是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库,以及电子邮件系统及自定义的商业对象.,6.5.5 ADO对象编程,(二)ADO对象最基本的操作流程: 初始化COM库,引入ADO库定义文件: 用Connection对象连接数据库; 利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理; 使用完毕后关闭连接释放对象。,6.5.5 ADO对象编程,Sub ConnectionExample() Dim cnn as ADODB.connection Set cnn=new ADODB.connection 通过ODBC DSN打开数据库 cnn.open “pubs“,“sa“,“ 检查是否成功建立连接对象 if cnn.state=adStateOpen then msgbox “Welcome to pubs!“ else msgbox “Sorry,no pubs!“ end 关闭连接对象 cnn.close End sub,使用 Open 方法建立到数据源的物理连接,pubs是SQL Server 安装附带的数据库,sa为system administrator,使用 Close 方法切断其 到数据源的物理连接,指示对象是打开的,6.5.5 ADO对象编程,Set 语句 将对象引用赋给变量或属性。语法: Set objectvar = New objectexpression | Nothing,6.5.5 ADO对象编程,声明对象变量 声明对象变量的方法和声明其它变量一样,要用 Dim、ReDim、Static、Private 和 Public。仅有的不同在于可选的 New 关键字和 Class 参数。语法如下: Dim | ReDim | Static | Private | Public variable As New class 例如:Dim cnn as ADODB.connection Set cnn = New ADODB.Connection 例如:Dim cnn As New ADODB.Connection New 关键字为可选项。可隐式地创建对象的关键字。如果使用 New 来声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来给该对象引用赋值,两条语句等价于 下面一条语句,Open 方法 (ADO Connection) 功能:打开到数据源的连接。 语法 connection.Open ConnectionString, UserID, Password, OpenOptions 以下参数均为可选项 ConnectionString :包含连接信息的字符串。 UserID :包含建立连接时所使用的用户名称。 Password :字符串,包含建立连接时所用密码。 OpenOptions :ConnectOptionEnum 值。如果设置为 adConnectAsync,则异步打开连接。如果设置为ConnectComplete当连接可用时将调用该事件。,6.5.5 ADO对象编程,二.用ADO操纵数据库 使用ADO操作数据库的主要步骤和方法: 打开数据库。 首先需要创建数据库连接对象(connection),然后调用该对象的Open方法即可打开数据库。 操作数据库数据。 在数据库打开之后,通过Connection、Command对象执行SQL命令,或者创建记录集(Recordset)对象,使用该对象的各种方法就可以进行数据库数据的查询、定位以及增加、删除和修改。 关闭数据库。使用上面创建的数据库连接对象的close方法就可以进行数据库的关闭。,6.5.5 ADO对象编程,Connection对象的创建、连接以及关闭数据库的方法:,6.5.5 ADO对象编程,(一)AD0连接数据库 1连接到ODBC数据源的参数设置 Microsoft ODBC Provider允许ADO连接到任何ODBC的数据源。,(1)指定DSN或FileDSN的语法如下:,set con=new ADODB.connection con.Open “Provider=MSDASQL; DSN=name|FileDSN=filename; DATABASE=databasename;“ PWD=password“,MSDASQL为默认值: Provider的默认参数值可以省略.,DSN或FileDSN,可通过“Windows控制面板“ 中的“ODBC管理器“进行定义,set con=new ADODB.connection con.Open “DRIVER=drivername; SERVER=servername; DATABASE=databasename;“ PWD=password“,6.5.5 ADO对象编程,(2)无DSN(非DSN连接)的语法如下:,set con=new ADODB.connection con.Open “provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:library.mdb;“_ &“Persist Security Info=False“,6.5.5 ADO对象编程,2连接到Access数据文件ConnectionString参数设置 可以使用指定OLE DB提供者和连接字符串来连接Access数据文件。 例如:,c:library.mdb为数据库的路径和名称。,set con=new ADODB.connection con.Open “Provider=Microsoft.Jet.OLEDB4.0; DataSource= c:library.mdb;“&“_ User ID=rose; rose可为管理员名 Password=sa; sa为系统管理员密码 Persist Security Info=True “,6.5.5 ADO对象编程,如果数据库有密码,则:,6.5.5 ADO对象编程,如果数据库是局域网其他计算机上的,那么这个数据库所在的位置,至少上一层目录为共享目录:,set con=new ADODB.connection con.Open “Provider=MicrosoftJetOLEDB40; DataSource=qyKongdata library.mdb;“&“ _ User ID=rose; Persist Security Info=False“,“qyKongdatalibrary.mdb”为在网络邻居中 名为qyKong的机器上(IP也可以)的data文件夹下 的名为library的Access数据。,6.5.5 ADO对象编程,3连接到SQL Server数据源参数设置 以下范例通过打开3个使用不同提供者的Connection对象演示Provider属性,还使用 DefaultDatabase属性设置Microsoft ODBC提供者的默认数据库。,Private Sub Providerx() Dim cnn1 As ADODB.Connection Dim cnn2 As ADODB.Connection Dim cnn3 As ADODB.Connection,6.5.5 ADO对象编程,使用Microsoft ODBC提供者打开数据库 Set cnn1 = New ADODB.Connection cnn1.ConnectionString=“driver=SQL Server;“_ pwd=pwd“ cnn1.Open cnn1.DefaultDatabase = “pubs“ 显示提供者 MsgBox “cnn1 provider:“ & cnn1.Provider,Open方法:打开一个到数据源的连接 格式: connection.Open ConnectionString,UserID,Password,为数据库所在服务器名,数据库名,6.5.5 ADO对象编程,使用Microsoft Jet提供者打开数据库 Set cnn2 = New ADODB.Connection cnn2.Provider = “Microsoft.Jet.OLEDB.3.51“ cnn2.Open “c:databasestudent.mdb“, “admin“ 显示提供者 MsgBox “cnn2 provider:“ & cnn2.Provider,6.5.5 ADO对象编程,使用Microsoft SQL服务器提供者打开数据库 Set cnn3 = New ADODB.Connection cnn3.Provider = “sqloledb“ SQLServer联机服务器提供的oledb cnn3.Open “Data source=srv; Initial Catalog = pubs;“ ,“sa“ 显示提供者 MsgBox “cnn3 provider:“ & cnn3.Provider cnn1.Close cnn2.Close cnn3.Close End Sub,定义的数据源名,6.5.5 ADO对象编程,ODBC-File DSN连接,方法:cnn.Open “filedsn=c:somepathmydb.dsn; uid=admin; pwd=;“,方法:cnn.Open “dsn=advWorks; uid=admin; pwd=;“,通过以上介绍,可以总结出ADO与不同数据库连接所使用的连接字符串如下: ODBC连接 ODBC-DSN连接,与IIS一同安装并位于 C:InetPub ASPSamp AdvWorks的数据源 AdvWorks.mdb,6.5.5 ADO对象编程,方法:cnn.Open “driver=Microsoft Access Driver (*.mdb);“ “,ODBC连接 ODBC Driver for Access,VB提供的数据源驱动程序,允许ADO访问 Access数据库,6.5.5 ADO对象编程,ODBC连接 ODBC Driver for SQL Server,方法:cnn.Open “driver=SQL Server; server=myServerName;“_ “,VB提供的数据源的驱动程序,允许ADO访问SQL Server数据库,6.5.5 ADO对象编程,OLE DB Provider连接 OLE DB Provider For Microsoft Jet,方法: con.Open “provider=Microsoft.Jet.OLEDB.4.0;“_ “,VB提供的连接字符串,允许 ADO 访问 Microsoft Jet 数据库,6.5.5 ADO对象编程,OLE DB Provider连接 OLE DB Provider For ODBC Database Access(Jet)方法:,cnn.Open “Provider=MSDASQL; driver=Microsoft Access Driver (*.mdb);“_ “,Microsoft ODBC Provider 允许 ADO 连接到任何 ODBC 的数据源, 该连接字符串为ADO 的默认ODBC提供者,6.5.5 ADO对象编程,cnn.Open “Provider=MSDASQL; driver=SQL Server; server=myServerName;“_ “,OLE DB Provider连接 OLE DB Provider For ODBC Database SQL Server方法:,6.5.5 ADO对象编程,(二)用记录集(Recordset)对象操纵数据 记录集(Recordset)对象是ADO操作中最常用的对象。,Open方法(ADO)Recordset 功能:打开游标。所谓游标是从数据源返回的满足 SQL 语句所规定的条件的行的集合。 recordset.Open Source, ActiveConnection, CursorType, LockType Open后面的参数均为可选项 参数 Source:指定Command 对象的变量名、SQL 语句、表名、存储过程调用或基本Recordset 文件名。 ActiveConnection:指定有效 Connection 对象变量名;或字符串,包含ConnectionString参数。,CursorType:确定提供者打开 Recordset 时应该使用的游标类型。可为下列常量之一,健相当于书签,只可根据健集的 健值,添加、改变、获取或删除 基础数据库表或表的行。,行的动态集合,动态添加、 改变、获取或删除基本数据 库表或表的行。,打开客户端 Recordset 对象时唯一允许使用的游标类 型,使用这个游标相当于结果集的副本。,LockType:参数指定锁定类型以支持并发,参数可为下列常量之一,6.5.5 ADO对象编程,1创建、打开RecordSet对象以及浏览数据记录 下面来学习一个例子:,Sub ADOopenRecords() Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim fld As ADODB.Field 打开连接 cnn.Open“provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:northwind.mdb;“,6.5.5 ADO对象编程,打开方式 forward_only,read_only rst.Open “select * from customers where region=WA“, cnn, adOpenForwardOnly, 游标只能在记录中向前滚动 adLockReadOnly 只读功能,ActiveConnection,这两行均为默认值,数据库northwind中的表,6.5.5 ADO对象编程,Move,MoveNext,MoveFirst等方法,和DAO相同。,输出第一个记录的所有字段值 For Each fld In rst.Fields fld为字段 Debug.Print fld.Value Next Debug.Print rst.Close cnn.Close End Sub,Debug.Print在“调试“窗口的“立即“面板中输出,6.5.5 ADO对象编程,2查询数据记录 ADO的查询数据库记录的方法和DAO有所不同,DAO可以利用Recordset对象的FindFirst、FindNext、FindLast、FindPrevious方法。 ADO只有Find方法。Find(ADO)方法的调用语法是:,RstName.Find Criteria , SkipRecords, SearchDirection , Start ,Criteria:字符串类型,包含用于搜索的指定列名、比较操作符和值的语句。比较只是针对于表中的单个字段。 比较符仅限于“=“、“、“=“、“=“和“LIKE“;,6.5.5 ADO对象编程,使用Like操作符允许查找一个字符串,字符串由单引号分隔(如“state = WA ”);日期值以“#”(数字记号)分隔(如“start_date #7 / 22/ 97#”)。不能使用双引号(“)。 使用Like操作符,可以用星号(*)作为字符串值中的通配符。星号必须是值中的最后一个字符或值中的唯一字符,或者“_”(某字符只出现一次)。例如“state like M_”与 Maine 匹配。 state like M*”与Massachusetts 匹配。 SkipRecords是长整型值,默认值为零。它指定当前行或 start 书签的位移以开始搜索。,searchDirection 指定搜索应从当前行还是搜索方向上的下一个有效行开始。其值可为 adSearchForward 或 adSearchBackward。搜索停止在记录集的开始还是末尾则取决于 searchDirection 值。 start 变体型书签,用作搜索的开始位置。,6.5.5 ADO对象编程,3增、删、改数据记录 ADO用与DAO采用相同的方法进行添加、删除操作。唯一不同点要先建立一个connection对象。 ADO还提供了一种快捷的添加方式.,修改现有记录时,ADO不需要调用Edit方法,直接对当前记录某字段属性赋值之后调用update方法就可以实现。,6.5.5 ADO对象编程,(三) ADO运行的查询语句 使用Connection对象的Execute方法,执行在 CommandText属性中指定的查询、SQL 语句或存储过程。查询内容由该方法的参数确定。 语法: 不返回查询的命令:,connectionExecute CommandText,RecordsAffected,Options,如果该命令为不按行返回查询,则返回时关闭 Recordset 对象。,6.5.5 ADO对象编程,Set recordset = connection.Execute CommandText,RecordsAffected,Options,按行返回查询的命令:,参数 CommandText:字符串,包含要执行的SQL语句、表名、存储过程等。 RecordsAffected:可选,返回操作所影响的记录数目。 Options:可选,指示提供者应如何为 CommandText 参数赋值,可为下列值之一。,主要常量说明: adCmdText:指示提供者应将 CommandText 赋值为命令的文本定义。 adCmdTable:指示 ADO 应生成 SQL 查询以便从 CommandText 命名的表中返回所有查询行。 adCmdStoredProc指示提供者应将 CommandText 赋值为存储过程。 adCmdUnknown指示 CommandText 参数中的命令类型未知。,Execute方法返回值: 返回 Recordset 对象引用。 如果用 New 关键字声明一个对象变量,Visual Basic 将自动创建一个对象,并在第一次使用该变量时赋值对象引用。 例如cnn就是数据库连接的对象引用,建立好连接后,所以的数据库操作都要通过这个对象引用cnn来进行。 Execute方法使用如下例:,6.5.5 ADO对象编程,Sub ExcuteX() Dim cnn As ADODB.Connection Dim strSQL As String 定义SQL语句作为命令文本执行 strSQL =“update SPJ set PRICE = PRICE*1.06“&“where SNO=S4 AND PNO=P2 “,SQL命令Update(参见书P131) 功能:保存对Recordset对象的当前记录所做的更改。 语法:Update 基本表名 SET 列名= 值表达式, 列名 = 值表达式Where 条件表达式,6.5.5 ADO对象编程,打开连接 cnn.Open “provider=Microsoft.Jet.OLEDB.4.0; Data Source=.项目零件供应.mdb;“ 执行查询命令 cnn.Execute strSQL cnn.Close End Sub,6.5.5 ADO对象编程,(四) ADO控件及对象编程举例 例1 :使用ADO控件的属性和方法进行编程。使用绑定控件增加、删除、修改书籍(Titles)信息。,进入,6.5.5 ADO对象编程,表6.9 主要控件对象的属性,6.5.5 ADO对象编程,6.5.5 ADO对象编程,代码如下:,Private Sub Form_Load() 窗体加载 Adodc1.ConnectionString = “provider=Microsoft.Jet.OLEDB.4.0; Data Source=“ Persist Security Info=False“ Adodc1.RecordSource = “select * from Titles“ Adodc1.Refresh,6.5.5 ADO对象编程,For i = 0 To 5 Text1(i).Enabled = False Next i cmdsave.Enabled = False 添加记录按钮 cmdcancel.Enabled = False 删除记录按钮 End Sub,6.5.5 ADO对象编程,Private Sub cmdadd_Click() 添加记录 Adodc1.Recordset.AddNew For i = 0 To 5 Text1(i).Enabled = True Text1(i).Text = “ Next i Text1(0).SetFocus,6.5.5 ADO对象编程,cmdadd.Enabled = False cmddelete.Enabled = False cmdedit.Enabled = False cmdsave.Enabled = True cmdcancel.Enabled = True cmdmove(0).Enabled = False cmdmove(1).Enabled = False cmdmove(2).Enabled = False cmdmove(3).Enabled = False End Sub,6.5.5 ADO对象编程,Private Sub cmddelete_Click() 删除记录 Dim myval As String myval = MsgBox(“是否要删除该记录?“, vbYesNo)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年文稿设计规范课件
- 2026年物流企业安全生产课件(培训讲义版)
- 2025年院感理论考题及答案
- 2026 年一粟来之不易共守粮食资源主题课件
- 2026 年全国爱牙日科学防蛀护齿知识学习课件
- 2026 年爱护牙齿绽放微笑口腔健康课件
- 心肺复苏与医院感染管理培训考试试题及答案
- 塑料着色工操作管理模拟考核试卷含答案
- 漆器制作工道德测试考核试卷含答案
- 模具工岗前工艺规程考核试卷含答案
- 庐陵新区禾埠街道办事处2026年面向社会公开招聘编外工作人员笔试备考试题及答案详解
- 2026秋新教材人教版小学美术五年级上册(全册)教学设计(附目录p79)
- 个体工商户变更经营者法律责任提示、个体工商户登记(备案)申请书、经营者变更登记承诺书
- DL∕T 5344-2018 电力光纤通信工程验收规范
- (正式版)JC∕T 60022-2024 陶粒窑协同处置固体废物技术规范
- SL+303-2017水利水电工程施工组织设计规范
- 请护工照顾老人协议书
- DL-T1475-2015电力安全工器具配置与存放技术要求
- 果蔬质量安全培训课件
- 语法讲解(冠词)a.an.the
- 《曼陀罗绘画疗愈-初三减压》PPT
评论
0/150
提交评论