VisualBasic中的数据库编程.ppt

上传人:za****8 文档编号:6361005 上传时间:2020-02-23 格式:PPT 页数:132 大小:2.12MB
返回 下载 相关 举报
VisualBasic中的数据库编程.ppt_第1页
第1页 / 共132页
VisualBasic中的数据库编程.ppt_第2页
第2页 / 共132页
VisualBasic中的数据库编程.ppt_第3页
第3页 / 共132页
点击查看更多>>
资源描述
10 1数据库的概念10 2关系数据库操作语言SQL简介10 3VisualBasic中的数据库操作 第10章VisualBasic中的数据库编程 一个数据库系统由数据库和数据库管理系统 DBMS DataBaseManagementSystem 组成 数据库存储数据 是一个静态的存储结构 数据库中的数据是存放在外存储器中的永久性数据 使用时必须把它调入内存 数据库管理系统是一个专门的管理软件 负责数据的检索 增加 删除与修改 维护数据的一致性与完整性 提供正确使用的各种机制 应用程序不能直接使用数据库中的数据 只能提出访问数据的请求 由DBMS完成对数据的操作 10 1数据库的概念 关系数据库的逻辑结构 关系数据库是二维表的集合 这些二维表是有应用语义的 表中的每行是描述事物状态的一组数据 每列描述事物的某个特征 下列是几个重要的术语 元组 表中的一行 应用上常称为记录 属性 表中的一列 应用上常称为字段 候选码 能够惟一地标识表中一个记录的最小的字段集合 主码 主键 主关键字 被指定用作记录标识的候选码 从上述定义可见 候选码可有多个 主码则只有一个 例10 1某数据库中包含三个表 教师表 教师号 教师名 系 教研组 例10 1某数据库中包含三个表 教师表 教师号 教师名 系 教研组 课程表 课程号 课程名 学时 学分 层次 例10 1某数据库中包含三个表 教师表 教师号 教师名 系 教研组 课程表 课程号 课程名 学时 学分 层次 排课表 班级号 课程号 教师号 上课时间 课室号 例10 1某数据库中包含三个表 教师表 教师号 教师名 系 教研组 课程表 课程号 课程名 学时 学分 层次 排课表 班级号 课程号 教师号 上课时间 课室号 括号内是每个表的字段名 在教师表中 根据 教师号 可以惟一决定一个记录 因此 教师号 可以作为教师表的候选码 如果无一教师同姓同名 则 教师号 也可作为候选码 可以任选其中之一作为主码 课程表中只有 课程号 可以作为候选码 因此它就是主码 排课表中只有同时给定 班级号 和 课程号 才能惟一决定一个记录 所以它的主码是字段集合 班级号 课程号 排课表中的字段名 课程号 与课程表的主码 课程号 语义相同且取值范围也相同 称为课程表的外码 排课表可以通过它与课程表中的 课程号 联系 字段名 教师号 与教师的主码 教师号 语义相同且取值范围也相同 是教师表的外码 排课表可以通过它与教师表中的 教师号 联系 即排课表除主码外有两个外码 SQL StructuredQueryLanguage 结构化查询语言 是最重要的关系数据库操作语言 SQL语言不是一个完整的程序设计语言 它没有用于控制程序分支的GOTO语句 也没有用于控制循环的DO或For语句 它主要包括创建 更新和操作数据库中的数据的语句 10 2 1SQL的语句10 2 2SQL中的数据操作 10 2关系数据库操作语言SQL简介 SQL语句分两大类 DDL 数据定义语言 语句DDL语句用于创建和定义新的数据库表 字段和索引 DML 数据操作语言 语句DML语句用于检索 更新和插入数据 10 2 1SQL的语句 DDL语句用于创建和定义新的数据库表 字段和索引 有三类 CREAT 表定义 ALTER 表修改 和DROP 表删除 CREATE 创建新表 字段 索引ALTER 在表中添加字段或改变字段定义DROP 删除数据库中的表或索引 DML语句用于检索 更新和插入数据 包括数据检索语句 SELECT语句 和数据更新语句 INSERT语句 UPDATE语句和DELETE语句 两大类 SELECT 检索满足条件的记录INSERT 插入新纪录UPDATE 更新指定的记录或字段DELETE 删除记录 1 数据检索语句SELECT功能 返回一张表 该表由满足检索条件的记录排列而成 格式 SELECT DISTINCT FROM WHERE GROUPBY HAVING ORDERBY ASC DESC 10 2 2SQL中的数据操作 SELECT 把所要选择查看的字段 即返回的表中所要包含的字段 的名字排列在关键字 SELECE 后面 各字段名之间用都逗号 分隔 其中 DISTINCT 表示删掉查询结果中重复的行 FROM SELECT语句必须带的子句 指明要从哪个 些 表中选择所要查看的字段 表的名字排列在 FROM 后面 各表之间用逗号 分隔 FROM 指定要从中检索的表WHERE 指定选择的标准GROUPBY 把所选择的记录分组HAVING 分组的提取条件ORDERBY 指定查询所得记录的排序方式 SQL子句 WHERE 选择的标准用跟在 WHERE 后面的表示 GROUPBY 该语句的是记录分组的根据 即把在该字段中有相同值的记录分在同一组 HAVING 该语句的是记录组提取的条件 即满足该条件的组才会最终出现在 返回表 中 ORDERBY 该语句的是记录排序所用的 关键字 ASC是升序 DESC是降序 例10 2查看教师表中的全部数据 SELECT FROM教师在此 代表全部字段的字段名 这是简化的写法 等价于 SELECT教师号 教师名 系 教研组FROM教师检索结果返回一张表 例10 3查看教师表中的全部教师的编号 姓名和所在系SELECT教师号 教师名 系 FROM教师例10 4在教师表中检索计算机系的教师SELECT FROM教师WHERE系 计算机 例10 5在课程表中查找学时数75大于 小于90的课程的课程名 学时数和学分数 SELECT课程名 学时 学分FROM课程WHERE学时WHERE 75And学时 例10 8在课程表中使用 GROUPBY 按课程名分组 SELECT课程名 SUM 学时 SUM 学分 FROM课程GROUPBY课程名例10 9在课程表中使用 GROUPBY 按课程名分组后 使用HAVING提取同组课程学时之和70大于的行SELECT课程名 SUM 学时 SUM 学分 FROM课程GROUPBY课程名HAVINGSUM 学时 70 2 数据更新语句SQL的数据更新语句包括UPDATE语句 INSERT语句和DELETE语句三类 1 UPDATE语句功能 对合乎条件的记录 改变其中一个或多个字段 列 的值 格式 UPDATE表名SET WHERE 例10 10把课程表中每门课程增加18学时 增加1个学分 UPDATE课程SET学时 学时 18 学分 1例10 11把0102号课程星期二3 4节的课改为星期一3 4节 地点不变 UPDATE排课SET止课时间 周一3 4 WHERE课程号 0102 And上课时间 周二3 4 2 INSERT语句功能 添加新的记录到表中 格式 INSERTINTO VALUES 3 DELETE语句功能 删除表中记录 若无WHERE语句则删除表中全部数据 但表仍存在 格式 DELETEFROM WHERE 例10 12在教师表中增加一个教师 INSERTINTO教师 教师号 教师名 系 教研组 VALUES 1031 余佩玉 电信工程 系统 例10 13删除排课表中全部数据 DELETEFROM排课例10 14从教师表中删除0873号教师的记录 DELETEFROM教师WHERE教师号 0873 VB数据库应用程序包括三部分 用户界面 Jet引擎 数据库 10 3VisualBasic中的数据库操作 用户界面 Jet引擎 数据库 VB提供的数据库引擎名叫 Jet 它位于用户程序与数据库文件之间 功能是把用户程序访问数据库的请求变成对数据库的实际操作 实现 透明 访问 只要是Jet支持的数据库 不管它是什么格式 在用户程序中都使用相同的数据访问对象和编程技术 此外 Jet包含一个 查询处理器 接受 解释与执行SQL语句的请求 Jet还包含一个 结果处理器 管理查询返回的结果 VB应用程序的用户界面的可视部分是窗体 通过窗体 用户可以查看和更新数据 驱动这些窗体的是应用程序的VB代码 包括用来请求数据库服务的 数据访问对象 的属性和方法 数据库是包含数据库表的一个或多个文件 它包含数据但不对数据做任何操作 数据操作是数据库引擎的人任务 数据库应用程序的这三个部分可都放在一台计算机上 供单用户应用程序使用 也可放在不同的计算机上 通过网络连接起来 把数据存放在一台计算机上 而把应用程序存放在另外的计算机上的这种数据库应用程序有两种结构 一种叫 远程数据库 另一种叫 客户机 服务器数据库 在客户机 服务器数据库系统中 数据库引擎与数据库一同放在服务器上 数据库引擎可以同时为多台客户机服务 在远程数据库系统中 数据库引擎与用户应用程序放在同一台计算机上 数据库单独放在远程计算机上 用户界面 数据库引擎 数据库 客户机 服务器 服务器 客户机 服务器 客户机 用户界面 数据库引擎 数据库 远程 在VB中不能直接对数据库内的表进行访问 VB通过 记录集 Recordset 对象访问数据库 记录集由一个或几个表中的数据构成 也是由行和列组成的一张表 在VB中的记录集有表 动态集和快照三种类型 1 表 Table 类型表类型的记录集当中的数据只能来源于实际数据库中的一个表 不能是多个表中数据的联合 VB中的各种数据库操作对表类型的记录集都适用 2 动态集 DynaSet 类型动态集类型的记录集当中的数据是对一个或几个表中的记录的引用 动态集和产生动态集的基本表可以互相更新 在打开动态集时 如果其他用户修改了基本表 动态集将反映这种修改 3 快照 SnapShot 类型快照类型的记录集是静态的数据 只读 它反映产生快照的一瞬间数据库的状态 因此 只适合于浏览 快照类型有一个变形类型 被称为 仅向前快照 或 向前滚动快照 仅向前快照只允许在记录集内向前移动 而且在VB中的仅向前快照类型的记录集是不可更新的 在VB中建立数据库有下列4种方法 1 使用可视化数据管理器 无需编程 2 使用数据反访问对象 通过编程 3 通过MicrosoftAccess数据库管理系统 用MicrosoftAccess创建的数据库与在VB中创建的库是一样的 4 通过外部数据库应用程序 如FoxPro dBASE或ODBC客户机 服务器应用程序产品 VB可以访问这些外部数据库 1 启动可视化数据管理器在VB的 设计 模式窗口中单击 外接程序 菜单中的 可视化数据管理器 命令即弹出可视化数据管理器窗口 10 3 1可视化数据管理器 2 使用可视化数据管理器建立数据库使用可视化数据管理器建立数据库的过程大致分为三步 第一步 建立数据库结构 第二步 向数据库中添加表 第三步 向表中输入数据 例10 15新建取名为 排课信息 mdb 的数据库并在其中建立名为 课程 的表 课程 表的内容为表10 2所示 第一步 建立数据库结构 单击此处 第一步 建立数据库结构 存储路径 第一步 建立数据库结构 数据库名 单击此处 第一步 建立数据库结构 数据库路径和名字 下面开始在数据库中建立表 第二步 向数据库中添加表 右击可弹出菜单 单击这里 第二步 向数据库中添加表 单击这里 第二步 向数据库中添加表 Text类型需设长度 第二步 向数据库中添加表 添加索引 第二步 向数据库中添加表 单击这里则可生成表 第三步 向表中输入数据 第三步 向表中输入数据 第三步 向表中输入数据 第三步 向表中输入数据 基本概念DAO是MicrosoftJet数据库引擎的面向对象的编程接口 由一系列数据访问对象以分层形式组织而成 分层结构的顶部是MicrosoftJet数据库引擎本身 DBEngine对象 它是惟一不被其他对象包含的数据访问对象 它拥有一个Workspaces 工作区集合 对像 该集合包含一个或多个Workspace 工作区 对象 每个Workspace对象拥有一个DataBases 数据库集合 对象 该集合包含一个或多个DataBase 数据库 对象 每个DataBase对象拥有一个TableDefs 表集合 对象 该集合包含一个或多个TableDef 表 对象 如此等等 10 3 2DAO数据访问对象 DAO分层结构图中的元素实际上是类而不是对象 它们只描述对象的 类型 例如语句 DimdbAsDataBase所表示的意思是 db是一个变量 代表一个DataBase 数据库 类型的对象 语句 DimrsAsRecordSet所表示的意思是 rs是一个变量 代表一个RecordSet 记录集 类型的对象 在这个分层结构的模型中 集合的成员可用于基于0的索引来访问 例如在名叫db的DataBase中的第一个TableDef 可以用db TableDefs 0 来表示 第二个用db TableDefs 1 来表示 等等 分层结构中的对象通过它们的完整路径来标识 在路径中使用点 定位符 例如 DBEnging Workspaces 0 DataBases 0 TableDefs 0 Fields 课程号 表示一个名叫 课程号 的字段 该字段在TableDefs集合的第一个TableDef中 TableDefs集合在DataBases集合的第一个DataBase中 DataBases集合在Workspaces集合的第一个Workspace中 而Workspaces集合则在DBEnging中 使用DAO数据访问对象编程包括两个内容 一是创建对象变量 二是通过设置其属性和调用其方法来操作它们 实现对数据库本身的访问 1 DBEngine对象DBEngine对象位于DAO顶层 容纳并控制其他DAO对象的行为 它不属于任何对象集合 不能在程序中创建它的实例 2 Workspace对象和Workspaces集合Workspace对象不是一个永久性的对象 它是DBEngine对象的一个 会话 session 它从用户注册开始完成一系列操作和事务处理 描述MicrosoftJet数据库引擎所进行的一系列工作 在用户注销或管理员强制终止时结束 Workspaces集合包含当前DBEngine对象中所有活动的Workspace对象 第一次引用Workspace对象时 DBEngine自动创建默认工作区Workspaces 0 Workspace对象的属性和方法摘要 Name属性 Workspace对象的名字Type属性 Workspace对象的类型 共有两种 通过DAO直接访问ODBC数据源时 使用ODBCDirectWorkspace 访问MicrosoftJet数据库时使用MicrosoftJetWorkspace OpenDataBase方法 打开MicrosoftJet3 51支持的所有类型的数据库CreateDataBase方法 在指定的MicrosoftJet工作区创建一个新的数据库 以 mdb文件的形式存放在磁盘上 并返回一个打开的DataBase对象 Workspace对象的方法摘要 OpenDataBase方法功能 在一个Workspace对象中打开指定的 物理 数据库 并且把该数据库的引用返回代表它的DataBase对象 格式 Set OpenDataBase DataBase 一个对象变量 代表要打开的数据库Workspace 可选 是一个对象变量 代表一个存放的Workspace对象 它是数据库所在的工作区 如果不指定这个值 则使用默认Workspacedbname 一个字符串 是已经存在的MicrosoftJet数据库文件的名字或者是一个ODBC数据源的名字Options 可选 如果是MicrosoftJetWorkspace 则True表示以 独占 方式打开数据库 False表示以 共享 方式打开Read Only 可选 是一个布尔变量 True表示只读 False表示可读 写Connect 可选 是一个字符串变量 指明包括口令在内的各种连接信息 CreateDataBase方法格式 Set CreateDataBase DataBase 一个对象变量 代表要创建的数据库对象Workspace 一个对象变量 代表一个存在的工作区对象 所要创建的数据库对象就将被包含在这个工作区 如果默认这个部分 则自动使用默认工作区Name 1至255个字符的字符串 是数据库文件的名字 可以使用完全的路径和文件名 默认的类型是 mdbLocale 一个字符串表达式 指定排序方式 此域不能缺 但可以使用默认值 否则出错 如果要为新数据库建立一个 口令 可在 口令 前加上字符串 pwd 连接到locale字符串的后面 例如 locale参数使用默认值 口令用 little cat 则应在此位置填写 pwd little cat Options 常数的组合 指定诸如版本号等信息 若不指定则使用version3 0文件格式 3 DataBase对象和DataBases集合DataBase对象映射的是打开的数据库 建立数据库映射 必须结合Set语句和Workspace对象的OpenDataBase或CreateDataBase方法 将一个DataBase型的对象变量指定为对数据库的引用 然后通过该变量的属性和方法来操作数据库 DataBases集合是当前打开的数据库的集合 当一个DataBase对象在某个Workspace对象中被打开时或创建时 将自动添加到DataBases集合中 当用Close方法关闭DataBase对象时 将自动从DataBases集合中删除 DataBase对象的属性 Name属性 DataBase对象的名字Connect属性 连接ODBC数据源时的连接字符串Updatable属性 其值为True则数据库可以更新 值为False则不能更新 DataBase对象的方法摘要CreateTableDef方法 在当前数据库中创建一个永久性的表对象CrdatQueryDef方法 在当前数据库中创建一个永久性的查询对象OpenRecordSet方法 创建一个新的RecordSet对象并且把它加到RecordSets集合中Refresh方法 当物理数据库刷新号 刷新数据库对象以反映物理数据库的最新数据Close方法 关闭当前数据库 关闭数据库前必须关闭所有打开的记录集对象 CreateTableDef方法功能 创建一个新的TableDef对象 仅适用于MicrosoftJetWorkspaces 格式 Set CreateTableDef CreateTableDef参数说明 TableDef 对象变量 代表所要创建的表DataBase 对象变量 代表要在其中创建表对象的数据库Name 可选 可变类型 字符串子类 新表对象的名字attributes 可选 常数或常数组合 表征新表的属性Source 可选 可变类型 字符串子类 保存着一个外部数据库中的表的名字 该表时原始数据所在之处Connect 可选 可变类型 字符串子类 说明一个打开的数据库的数据源 OpenRecordSet方法功能 创建一个新的RecordSet对象并且把它加到RecordSets集合中 格式1 Connection和DataBase对象使用 Set OpenRecordSet 格式2 QueryDef RecordSet和TableDef对象使用 Set OpenRecordSet OpenRecordSet参数说明 recordSet 对象变量 代表要打开的RecordSet对象object 一个存在的对象变量 就是要从它那里打开一个RecordSet对象Source 一个字符串 指出型RecordSet的记录源 该源可以时表名 查询名或者时返回一组记录的SQL语句Type 可选 一个常数 指出要打开的RecordSet的类型Options 可选 若干常数的组合 指出新RecordSet的特征 操作权限等 lockedits 可选 一个指示RecordSet的读写权限的常数 Type 的值及其意义 dbOpenTable 打开表类型的记录集对象dbOpenDynaset 打开动态集类型的记录集对象dbOpenSnapshot 打开快照类型的记录集对象dbOpenForwardOnly 打开向前滚动快照类型的记录集对象注意 如果不指定 Type 参数的值 则在MicrosoftJet工作区打开RecordSet对象时 OpenRecordSet方法将打开一个表类型的记录集 如果指定一个查询 OpenRecordSet方法将打开一个动态类型的记录集 4 TableDef对象和TableDefs集合TableDef对象映射物理数据库中的表 也用来映射MicrosoftJet数据库的链接表 前者时数据库中的永久性的表 链接表是指链接到MicrosoftJet数据库中的其他数据库的表 链接表的数据存储在外部数据库中 TableDefs集合是数据库中所有表的集合 TableDef对象的属性Name属性 TableDef对象的名字 可不同于库中的表名ValidationRule属性 有效性规则 约束用户输入到表中数据的范围 维护表的完整性DateCreated属性 创建表的日期和时间 只读 Updatable属性 值为True时则表中数据可以更新 值为False则不能更新RecordCount属性 对于库表 返回表中记录总数对于链接表 则总是返回 1 TableDef对象的方法摘要CreateIndex方法 为TableDef对象创建一个索引CreateField方法 为TableDef对象创建一个字段OpenRecordSet方法 创建一个记录对象 CreateField方法功能 创建一个新的Field对象 仅适用于MicrosoftJetWorkspaces 格式 Set CreateField CreateField参数说明 Field 对象变量 代表要创建的Field对象object 对象变量 代表Index Relation或TableDef对象 此方法正是要为它们创建新的Field对象Name 可选 可变类型 字符串子类 新的Field对象的名字Type 可选 是一个表征新的Field对象的数据库类型的常数size 可选 一个可变类型 整型子类 当Field对象的数据类型是Text时 表示此字段可以存储的最大字节数 5 RecordSet对象和RecordSets集合使用RecordSet对象可在记录一级上对数据库进行操作 程序运行时 可以用OpenRecordSet或CreateRecordSet方法创建RecordSet对象 然后通过该对象操作磁盘上的物理数据库 RecordSet对象的属性AbsolutePosition属性 设置或读取当前记录在记录集中的位置 第一条记录的位置是0 最后一条记录的位置是RecordCount 1EOF属性 当记录指针向后移动越过最后记录时 值为TrueIndex属性 设定或返回表类型的记录集的当前索引的名字 该索引必须是存在的Name属性 RecordSet对象的名字 Field I Value属性 当前记录第I号记录的值Sort属性 指定记录集记录的排序准则RecordCount属性 记录集当中记录的总数BOF属性 当记录指针向前移动越过首记录时 值为TrueNoMatch属性 当用Seek或Find方法查找时 如果没有满足条件的记录 则NoMatch属性值为TrueValidationRule属性 有效性规则 用来约束用户输入数据的范围 RecordSet对象的方法Close方法 关闭记录集Edit方法 将记录集设定为编辑状态 通常与UPDATE方法联用 即编辑完成后用UPDATE方法实际写入物理数据库中AddNew方法 向记录集添加一条空记录 且将指针移到该记录DELETE方法 删除当前记录 记录指针仍停留在已被删除的记录处 Move方法 将记录指针移到指定位置MoveFirst方法 将记录指针移到第一条记录 使之成为当前记录MoveNext方法 将记录指针移到下一条记录 使之成为当前记录MovePrevious方法 将记录指针移到前一条记录 使之成为当前记录MoveLast方法 将记录指针移到后一条记录 使之成为当前记录 Seek方法 将记录指针移到满足条件的第一条记录FindFirst方法 查找满足条件的第一条记录FindNext方法 查找满足条件的下一条记录FindPrevious方法 查找满足条件的上一条记录FindLast方法 查找满足条件的最后一条记录 AddNew方法功能 在一个可以更新的记录集对象中创建一个新记录格式 AddNew其中 RecordSet是对象变量 代表要在其中增加新记录的哪个记录集对象 RecordSet 要移动其中记录指针的那一个记录集 DELETE方法功能 在一个可以更新的记录集对象中删除当前记录格式 DELETE其中 RecordSet是对象变量 代表打算删除其中记录的哪个记录集对象 Move方法格式 Move rows 一个有符合的长整型数 正数指定向前 向文件尾 移动的行数 负数指定向后 向文件头 移动的行数startbookmark 可选 可变类型 字符串子类 的值 表示一个书签 如果指定 则移动相对于书签 否则相对于当前记录 MoveFirst MoveLast MoveNext MovePrevious方法格式 MoveFirst MoveLast MoveNext MovePrevious Seek方法功能 在一个带有索引的 表类型的记录集当中寻找一个合乎条件的记录 使它成为当前记录 格式 Seek RecordSet 对象变量 代表一个目前存在的表类型的记录集对象 它所定义的索引必须与记录集对象的 Index 属性相符comparison 一个字符串表达式 其值为 或 key1 key2 1 13个值 对应于记录集对象的当前索引中的各个域 FindFirst FindLast FindNext FindPrevious方法功能 在一个动态类型或快照类型的记录集对象中寻找满足条件的第一 最后 下一 前一 条记录 使该记录成为当前记录 仅适用于MicrosoftJet工作区 格式 FindFirst FindLast FindNext FindPrevious RecordSet 对象变量 代表一个现存的动态类型或快照类型的记录集对象criteria 用来查找记录的一个字符串 类似SQL语句的WHERE子句但没有 WHERE 注意 关于各种数据访问对象及其属性方法的详尽说明 请查阅 对象浏览器 查找记录操作步骤 在VB集成开发环境的 设计模式 窗口 单击试图菜单中的 对象浏览器 打开 对象浏览器 对话框 用在其中的下拉式组合框里输入需要查阅的对象 或属性或方法或事件 的名字 本例中的AddNew方法 单击组合框右边的 搜索 按钮 在 搜索结果 列表框中选择所要的项 在 Recordset 的成员 列表框中选择所要的项 单击 帮助 按钮 即对象浏览器窗口右上角的 号 弹出所查项目的详细说明 2 用DAO数据访问对象编程 使用数据访问对象编程包括两部分 一是创建对象变量 二是通过设置对象的属性 调用对象的方法来操作它们 要在VB程序中使用DAO数据访问对象 必须在工程中引用DAO的数据库引擎库 引用的步骤是 单击 工程 菜单中的 引用 命令 打开 引用 对话框 在 可用的引用 列表框中选择 MicrosoftDAO3 51ObjectLibrary Here 例10 16对数据库文件 排课信息 mdb 中的 课程 表进行操作 功能包括记录的浏览 添加 查找合乎条件的记录并且删除 第一步 新建一工程 按上页的方法引用MicrosoftDAO3 51ObjectLibrary 第二步 界面设计 本例由一个窗体 5个标签 5个文本框和6个命令按钮组成 Command1 Command4 Command5 第三步 代码 DimdbAsDatabase rsAsRecordsetPrivateSubForm Load Setdb OpenDatabase App Path 排课信息 mdb Setrs db OpenRecordset 课程 dbOpenTable rs Index 课程索引 CallrecshowEndSub PrivateSubrecshow OnErrorGoToerrText1 Text rs Fields 课程号 Text2 Text rs Fields 课程名 Text3 Text rs Fields 学时 Text4 Text rs Fields 学分 Text5 Text rs Fields 层次 ExitSuberr MsgBox Error EndSub PrivateSubCommand1 Click rs MoveFirstCallrecshowEndSubPrivateSubCommand2 Click rs MoveNextCallrecshowEndSubPrivateSubCommand3 Click rs MovePreviousCallrecshowEndSubPrivateSubCommand4 Click rs MoveLastCallrecshowEndSub PrivateSubCommand5 Click rs AddNewrs Fields 课程号 InputBox 请输入课程号 添加记录 rs Fields 课程名 InputBox 请输入课程名 添加记录 rs Fields 学时 InputBox 请输入学时数 添加记录 rs Fields 学分 InputBox 请输入学分数 添加记录 rs Fields 层次 InputBox 请输入层次级别 添加记录 rs Updaters MoveLastCallrecshowEndSub PrivateSubCommand6 Click Dimstr1AsStringstr1 InputBox 请输入要删除的课程号 删除对话框架 rs Seek str1rs DeleteCallCommand2 Click CallrecshowEndSub 3 使用Data控件建立应用程序 VB集成开发环境 工具箱 中的Data控件提供DAO数据访问对象的部分功能 只要在 设计模式 下 设定它的四个属性 Connect DataBaseNam RecordSource EOFAction 无需编程就可实现在一个表中前后移动记录指针 添加空记录 Data 控件本身不能显示数据 需要使用它的 依附 控件来显示数据 工具箱 中常用的依附控件主要有文本框 TextBox 标签 Label 复选框 CheckBox 与OLE控件等 在依附控件中只要设置两个属性 DataSource和DataField 所有这些属性都可以在属性窗口中对应项的下拉列表中选择 Data控件的四个属性的简要说明 Connect 返回或设置控件所绑定的数据源的类型 可以是Access dBASE的多个版本DataBaseNam 返回或设置Data控件所绑定的数据源 磁盘上的数据库文件 的名称及位置 对于多表结构的数据库文件 如Access 在此使用库文件名 对于单表结构的数据库文件 如Dbase 则使用库文件所在的文件夹的名字RecordSource 返回或设置Data控件的数据源中一个表的名称 EOFAction 返回或设置一个值 指示在EOF属性为True时Data控件进行什么操作0 默认值 保持最后一个记录为当前记录1 保持EOF属性为True 即记录指针保持在 越位 的位置2 自动添加一个空白记录 依附控件 的两个属性的简要说明 DataSource 控件所依附的Data控件的名字DataField Data控件所绑定的表中的一个字段的名字使用Data控件建立应用程序 就是适当地设定Data控件和依附控件的属性 使Data控件绑定数据库的一个表 成为这个数据源 表 的代理 向 依附控件 供应数据 依附控件 绑定表中的一个字段 显示表的 当前记录 里该字段的内容 例10 17对数据库文件 排课信息 mdb 中的 课程 表进行操作 功能包括记录的移动 修改与添加新记录 本例无需编写代码 人 机界面由一个窗体 一个Data控件 五个标签和五个文本框组成 各控件属性值请见课本389页 4 Data控件 与DAO数据访问对象的关系 把例10 16程序中的代码与例10 17中 Data控件 的属性设置做一对比 不难发现 Data控件 的作用就是代替了例10 16程序中开头的一行的两个对象变量的定义语句 还代替了Form Load 过程中头两个使用Open方法的语句 在例10 16中使用DAO数据访问对象编程前 必须通过 工程 菜单引用DAO的数据库引擎库 MicrosoftDAO3 51ObjectLibrary 就被自动加入工程中 因此 Data控件 与DAO数据访问对象并不互相排斥 可以在同一个工程中按需要同时使用它们 Microsoft公司制定了一个称为OLEDB的数据技术标准 目的是使用各种不同的编程语言 以统一的方式访问存储在不同信息源中的数据 这些信息源范围广泛 从简单的文本文件到复杂的异种数据库 Microsoft公司用一组组件对象模型 COM ComponentObjectModel 接口实现这个任务 这一组接口是系统级的编程接口 功能齐备 但使用手续复杂 Microsoft公司在OLEDB之上建立一套基于对象的应用级编程接口 是连接应用程序和OLEDB的桥梁 这就是ADO ActiveXDataObjects 10 3 3ADO数据访问对象 基本概念MicrosoftOLEDB可以访问的数据种类很多 甚至不一定是传统意义的数据库 OLEDB模型中有一个重要的逻辑部件叫 提供者 OLEDB为它所支持的每种数据源准备了一个 提供者 ADO通过这些 提供者 以统一方式 访问存储在不同信息源中的数据 Connection 连接 Command 命令 和RecordSet 记录集 是顶层对象 可以各自独立地创建或删除 Parameter 参数 对象可以独立创建 但作用前必须与Command对象联系起来 Field 字段 Error 错误 和Property 属性 对象只能依存于它们的父对象 不能独立创建 ADO由七个对象组成 Connection Recordset Command Error Properties Properties Parameters Properties Fileds Properties Connection对象包含某个数据提供者的信息 代表与数据源的一次连接过程 对任何数据源的操作要有一个Connection对象 Command对象定义将要对数据源执行的一条数据操作命令 当数据提供者是关系数据库时 这就是一个SQL语句 RecordSet对象是数据操作的真正接口 其类型 意义和功能与前面讨论的DAO中的同名对象相同 每个顶层ADO对象都包括Property对象的集合 Property对象使ADO能够动态地展示特定提供者的性能 与ADO数据访问对象配套的控件是 MicrosoftADODataControl6 0 OLEDB 使用前要把这个 ADO数据控件 添加到工具箱中方法是在 工程 菜单中单击 部件 命令 在弹出的对话框中选择 部件 标签 然后在列表框中选择 MicrosoftADODataControl6 0 OLEDB 选项 2 使用ADO数据控件建立应用程序 放在窗体上的 ADO数据控件 的外观和操作方法都与10 3 2小节所述的 Data控件 类似 它提供ADO数据访问对象的部分功能 只要在 设计模式 下 设定它的4个属性 无需编程就可实现在一个表中前后移动记录指针 浏览 修改和添加空记录 与Data控件一样 AD为O数据控件本身不能显示数据 需要使用它的 依附 控件来显示数据 ADO数据控件 的四个属性的简要说明 ConnectionString 设置或返回字符串值 用来建立数据源的连接信息 该字符串由一系列 argument value 形式的参数构成 参数间用分号分隔 ADO支持ConnectionString属性的4个参数如下 Provider 提供者的名字 DataSource 数据源的名称 含路径 RemoteProvider 打开客户端连接时使用的提供者名称 RemoteServer 服务器的路径名称 CommandType 设置或返回整数 指出命令类型 常数意义如下 1 AdCmdText命令文本内容为SQL语句2 AdCmdTable命令文本内容为表名3 AdCmdStoredProc命令文本内容为存储过程名4 AdCmdUnknown命令文本内容未知 RecordSource 一个字符串表达式 指定一个记录源 可能是表名 可能是返回一个记录集的SQL查询 总之其内容应相当于一个记录集EOFAction 取值会和意义见上一节 Data控件 的同名属性使用ADO数据控件建立应用程序 就是适当地设定ADO数据控件和依附控件的属性 使ADO数据控件绑定记录集 成为这个 记录源 的 代理 向 依附控件 供应数据 依附控件 绑定记录集当中的一个字段 显示记录集的 当前记录 里面该字段的内容 例10 18本例功能与例10 17完全相同 即对数据库文件 排课信息 mdb 中的 课程 表进行操作 功能包括记录的移动 修改与添加新记录 本例无需编写代码 人 机界面由一个窗体 一个ADO数据控件 五个标签和五个文本框组成 各控件属性值请见课本393页 用 ADO数据访问对象 编程通常包括两部分 一是建立ADO对象变量 二是利用对象的属性和方法实现下列任务 连接到数据源 指定访问数据源的命令 执行命令 如果执行命令的结果返回一个表 则把该表保存在 缓存 中 使用缓存的更改内容 更新数据源 提供常规方法检测错误 3 用ADO数据访问对象编程 例10 19本例功能是顺序浏览数据库文件 排课信息 mdb 里的 课程 表中的记录 界面由1个窗体 5个标签 5个文本框和4个命令按钮组成 界面由一个窗体 五个标签和五个文本框和4个命令按钮组成 注 运行本例前需在 部件 中先添加ADO数据控件 DimconnAsNewADODB ConnectionDimcmdAsNewADODB CommandDimrsAsNewADODB RecordsetPrivateSubrecshow Text1 Text rs Fields 课程号 Text2 Text rs Fields 课程名 Text3 Text rs Fields 学时 Text4 Text rs Fields 学分 Text5 Text rs Fields 层次 EndSub PrivateSubCommand1 Click rs MoveFirstCallrecshowEndSubPrivateSubCommand2 Click rs MoveNextIfrs EOFThenrs MoveLastCallrecshowEndSubPrivateSubCommand3 Click rs MovePreviousIfrs BOFThenrs MoveFirstCallrecshowEndSubPrivateSubCommand4 Click rs MoveLastCallrecshowEndSub PrivateSubForm Load conn Open Provider Microsoft Jet OLEDB 3 51 DataSource 排课信息 mdb Setcmd ActiveConnection conncmd CommandType adCmdTextcmd CommandText SELECT FROM课程 rs Opencmd adOpenDynamicrs MoveFirstCallrecshowEndSub Open方法 ADOConnection对象 功能 打开到数据源的连接 格式 Connection Open 参数 ConnectionString 可选 字符串 包含连接信息 UserID 可选 字符串 包含建立连接时使用的用户名称 Password 可选 字符串 包含建立连接时所用密码 OpenOptions 可选 ConnectOptionEnum值 如果设置为dConnectAsync 16 则异步打开连接 Open方法 ADORecordSet对象 功能 打开代表基本表 查询结果或者以前保存的RecordSet中记录的游标 指针 格式 RecordSet Open 参数 Source 可选 变体型 可以是Command对象类型的变量名 SQL语句 存储过程调用或持久RecordSet文件名 ActiveConnection 可选 变体型 可以是Connection对象类型的变量名 或包含ConnectionString参数的字符串 CursorType 可选 CursorTypeEnum值 确定提供都打开RecordSet应该使用的游标类型 游标类型常量 adOpenForwardOnly 默认值 打开仅向前类型游标adOpenKeyset 打开键类型游标adOpenDynamic 打开动态类型游标adOpenStatic 打开静态类型游标 LockType 可选 确定提供者打开RecordSet时应该使用的锁定 并发 类型的LockTypeEnum值 锁定类型常量 adLockReadOnly 默认值 只读 不能改变数据adLockPessimistic 保守式锁定 提供完成确保成功编辑记录所需的工作 通常通过在编辑时立即锁定数据源的记录来完成adLockOptimistic 开放式锁定 提供者使用开放式锁定 只在调用UPDATE方法时才锁定记录adLockBatchOptimistic 开放戒指经更新 用于批更新模式 Options 可选 长整型值 用于指示提供者如何计算Source参数 或从以前保存RecordSet的文件中恢复RecordSet Options常量 adCmdText 指示提供者应将Source作为命令的文本定义来解释adCmdTable 指示ADO生成SQL查询adCmdTableDirect 指示提供者更改从Source命名的表返回所有记录adCmdStoredProc 指示提供者将Source视为 存储过程 adCmdUnknown 指出Source参数中的命令类型为未知adCommandFile 指示应人Source命名的文件中恢复持久 保存 的RecordSetadExecuteAsync 指示异步执行SourceadFetchAsync 指示在提取CacheSize属性中指定的初始数量后 应该异步提取所有剩余的行 数据窗体模板 DFW DataFormWizard 是一个基于ADO的插件 为自动生成VB窗体而设计 它所生成的窗体包含各个被绑定的控件和过程 用来管理来自本地或远程数据源的信息 用户只需选择一个数据库和库中的一个数据表 DFW就可自动地生成对此数据表进行增 删 改和浏览的窗体 10 3 4数据窗体模板 1 在VB集成开发环境中加载DFW 如果在VB集成开发环境的 外接程序 菜单中已有 数据窗体模板 则DFW已经加载 否则 按如下步骤加载 单击 外接程序 菜单中的 外接程序管理器 命令 弹出 外接程序管理器 对话框 选取 VB6数据窗体向导 在标题为 加载行为 的框架中选中 加载 卸载 复选框 这里 这里 2 运行DFW 单击 外接程序 菜单中的 数据窗体模板 或 数据窗体向导 命令 弹出 数据窗体向导 对话框 单击此处 2 运行DFW 第一步 直接单击此处 2 运行DFW 第二步 选择后单击 下一步 2 运行DFW 第三步 选择数据库路径和名字 2 运行DFW 第四步 输入窗体名 窗体布局 绑定类型 2 运行DFW 第五步 选择记录源 表 选择要显示的字段 2 运行DFW 第五步 已选字段 排序字段 2 运行DFW 第六步 2 运行DFW 第七步 完成 例10 20使用DFW建立一个窗体 对access数据库文件 排课信息 mdb 中的 课程 表进行操作 该窗体使用ADO数据控件 显示间个记录 例10 21与例10 20一样 使用DFW建立一个窗体 对access数据库文件 排课信息 mdb 中的 课程 表进行操作 该窗体不使用ADO数据控件 而用ADO代码编程 例10 22与例10 20一样 使用DFW建立一个窗体 对access数据库文件 排课信息 mdb 中的 课程 表进行操作 该窗体不使用ADO数据控件 而用ADO代码编程 不是显示单个记录 而是使用网格同时显示多个记录
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!