第8章3节 记录集对象.ppt_第1页
第8章3节 记录集对象.ppt_第2页
第8章3节 记录集对象.ppt_第3页
第8章3节 记录集对象.ppt_第4页
第8章3节 记录集对象.ppt_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8 3记录集对象 本节内容 l记录集对象的方法 属性及集合l记录集对象的基本用法l记录集对象的分页显示功能 ADO中的内建对象RecordSet是数据库访问的主要接口 它指向数据表中的一个记录集 有点类似于C语言中指针的概念 在任何时刻一个Recordset对象只能指向一条记录 对象Recordset存放的是来自表或查询结果的记录集 是按记录 行 和字段 列 的形式构成 可以在非显式打开Connection对象的情况下 打开一个Recordset对象 也可以创建一个Connection对象 然后在该Connection对象上打开多个Recordset对象 Recordset对象创建一个数据游标的同时 就从数据提供者那里得到一个数据集 通过对创建与管理数据游标的Recordset对象属性的访问与方法的调用 可以在记录一级上对数据库中的数据进行诸如增删记录 更新记录及在记录之间移动等一系列操作 8 3 1创建Recordset对象 在使用Recordset对象之前 必须先创建该Recordset对象 创建Recordset对象可用以下几种方式 1 先创建Connection对象 然后在该Connection对象上创建Recordset对象 程序见书中sample8 06 asp 该程序首先通过以下语句 Setrs Server CreateObject ADODB RecordSet 创建Recordset对象后 便可利用其Open方法与数据库中表member连接 从而实现从数据库中读取数据 2 直接使用Recordset对象的功能来创建Recordset对象 8 3 2记录集对象的行为属性 Recordset对象的行为属性 1 CursorType 游标类型 属性 CursorType属性是Recorset对象中的一个重要属性 该属性决定Recordset对象所使用的游标类型 游标决定了可以对一个记录集进行什么操作 还决定了其他用户可以对一个记录集进行什么样的改变 可以用四种类型的游标打开一个记录集 下面列出了游标的不同类型和限制 adOpenDynamic 动态游标 常量值2 使用动态游标 可以在记录集中向前或向后移动 其他用户造成的记录的任何变化都将在记录集中有所反映 此类型的游标功能强大同时也是耗费系统资源最多的游标 Dynamic游标可以看到它们保存记录集合的所有变化 使用Dynamic游标的用户可以看到其他用户所做的编辑 增加 删除 如果数据提供者允许这种类型的游标 那么它是通过每隔一段时间从数据源重取数据来支持这种可视性的 毫无疑问这会需要很多的资源 adOpenKeyset 键集游标 常量值1 其行为类似动态游标 可以在记录集中向前或向后移动 不同的只是禁止查看其他用户添加的记录 并禁止访问其他用户删除的记录 但其他用户所做的数据更改依然可见 adOpenStatic 静态游标 常量值3 使用静态游标 可以在记录集中向前或向后移动 但是 如果用户在查看数据集同时 数据集发生了更新 删除或添加的操作 它将无法实时反映数据集的变化 AdOpenFowardOnly 前向游标 常量值0 该类型游标占用最少的资源 因而能得到最高的性能 它也是recordset缺省的游标类型 其行为类似静态游标 唯一的缺点是只能单向移动游标 只能使用movenext这样的方法从头到尾单向遍历记录集 而不能使用moveprev 否则将提示出错 直接使用Command或Connection对象的Execute方法创建的游标就属于该类游标 2 LockType 锁定类型 属性 LockType属性是Recordset对象中的又一个重要属性 当打开记录集时 可以指定锁定类型LockType 锁定就是如何确保数据的完整性 确保更改不会被覆盖 需要避免的典型情况是多次更新 比如一个用户改动了一些数据 接着另一个用户立即又将其做了修改 为了避免这种情况发生 就要锁定记录 有许多不同的方法可以保证记录得到保护 可通过锁定类型来设置这些方法 有下面的四种锁定类型 AdLockReadOnly 常量值1 Recordset对象以只读方式启动 指定不能修改记录集中的记录 无法运行AddNew Update及Delete等方法 适用于仅浏览数据的场合 AdLockOptimstic 常量值3 直到用Update方法提交更新记录时才锁定记录 AdLockPessimistic 常量值2 当修改记录时 数据提供者将尝试锁定记录以确保成功地编辑记录 只要编辑一开始 则立即锁住记录 AdLockBatchOptimstic 常量值4 同时更新多笔数据时 暂不将更新数据存入数据库 而是暂存在缓冲区中 等待UpdateBatch调用后才将数据一次性写入数据库 指定记录只能成批地更新 当不需要改动任何记录时 应该使用只读的记录集 这样提供者不用做任何检测 对于一般的使用AdLockOptimstic 3 Filter属性 该属性是Recordset对象的一个重要属性 虽然能使用SQL语句方便地对数据库中的记录进行过滤 但要频繁的使用SQL语句更新数据集将增大系统的负担 降低系统性能 使用Filter属性将可以方便地对Recordset对象的数据集设置过滤条件 Filter属性的语法格式如下 Recordset Filter Criteria String其中Criteria String就是过滤条件字符串 它可由一个或多个用AND或OR等逻辑运算符连接的子句组成 每个过滤条件由组成 如 name Jane 若有两个或两个以上的过滤条件 则使用AND或OR逻辑运算符将各个过滤条件连接起来 每个过滤条件使用时应遵循以下规则 FieldName必须为当前Recordset中的有效字段名 如果字段名包含空格 必须用方括号将字段名括起来 Operator是关系运算符 可以是 或LIKE等运算符 Value用于与对应字段匹配的值 如 Jane 等 字符串和日期使用单引号 如果Operator为LIKE Value可以使用匹配符 可以使用星号 和百分号 星号 匹配任意个字符 而百分号 匹配任意一个字符 在LIKE子句使用通配符时 一般通配符只在开头或结尾处使用 使用过滤条件后 ADO将记录集按该过滤条件过滤出相应的记录 若没有符合过滤条件的记录 则Recordset对象的RecordCount属性将返回0 也可通过EOF和BOF的值来判断 过滤条件使用完毕 需解除该过滤条件时 只要将空字符串赋值该Filter属性即可 如 4 CacheSize属性 当一个Recordset对象打开时 从数据源中返回所需的记录数据 并将其保存在缓冲区中 用该属性指定一个Recordset对象一次可存于缓冲区中记录的数目 即从数据库服务器上一次可以取得多少个记录 默认值为1 改变该属性值为一个适当的值可以提高数据库服务器的效率 下面的脚本将CacheSize设定为6 5 MaxRecords属性 该属性指示通过查询返回给Recordset记录的最大数目 默认值为0 即返回所有所需的记录 在打开Recordset前 该属性是可读写的 用MaxRecords属性可限制数据提供者从数据源返回的记录数 而Recordset打开后 该属性是只读的 2与游标移动有关的属性 1 BOF属性 该属性指明当前记录指针是否在首记录之前 若当前记录指针已经移动到第一条记录之前 则BOF返回True 如果当前记录集没有记录 则BOF也返回Ture 一般在使用MovePrevious方法前 可以通过检测BOF的值 来判断是否已经将当前记录指针移到首条记录之前 2 EOF属性 该属性指明当前记录指针是否在尾记录之后 若当前记录指针已经在最后一个记录之后 则EOF返回Ture 如果当前记录集中不存在记录 则EOF也返回Ture 指针在其他位置时返回False 该属性一般用于对记录集进行从头到尾的遍历时使用 一般在使用MoveNext或者Move方法前 可以通过检测该属性 来判断是否已经到了记录集末尾 3 BookMark属性 该属性只有在Recordset对象支持BookMark时才有效 当在记录集中移动时 可能需要保留记录的位置 以后再移回来 同真实的书签相似 一个记录集书签是一个指向单个记录的唯一的指针 4 RecordCount属性 该属性返回Recordset对象中记录的个数 为一长整型值 使用RecordCount属性可确定Recordset对象中记录的数目 ADO无法确定记录数时该属性返回 1 该属性仅在打开与数据源的连接后才能使用 读已关闭的Recordset上的RecordCount属性将产生错误 当CursorType属性设置为adOpenForwardOnly游标类型时 RecordCount属性是无效的 因为当数据库在处理查询时 Recordset正在数据库中继续查找匹配的数据 因此在数据库中所有记录查完之前 RecordCount属性是无效的 5 AbsolutePage属性 该属性可以设置或返回当前记录的绝对页号 通过使用该属性 就可以按PageSize属性指定的页记录数在数据集中移动当前记录指针的位置 直接跳到某一页 通常 AbsolutePage为从1开始到当前数据集的最大页数 需要注意的是 AbsolutePage属性的使用需要数据提供者提供支持才能有效地使用 6 PageCount属性 该属性用来返回Recordset对象中包含的数据页数 为一长整型值 页 的大小等于PageSize属性所设置的值 即每页记录的个数 只有最后一页的记录个数可能小于PageSize 而其它页的记录个数均等于PageSize 若Recordset对象不支持该属性 则该属性返回 1 表明PageCount无法确定 7 PageSize属性 该属性定义Recordset中一页所包含的记录数 为一长整型值 默认值为10 当记录集返回到Recordset时 该记录集就被逻辑地划分为每页记录个数为PageSize的若干页 除最后一页外每页包含PageSize个记录 页的大小确定后 允许使用AbsolutePage属性移动到特定页的第一个记录 在用户希望对数据进行分页显示时 该属性将非常有用 可以在快速地移动到某一页后 对该页中的记录进行操作 8 AbsolutePosition属性 该属性用于设置Recordset对象当前记录的顺序位置 通常 这个顺序号从1开始到当前数据集的记录总数 需要注意的是 设置AbsolutePosition属性时 ADO将从数据源中再次读取数据集 记录顺序将发生改变 3与记录排列顺序有关的属性 1 CursorLocation属性 该属性决定Recordset对象能否被排序及CursorLocation的类型 其语法格式如下 Recordset CursorLocation Value 其中Value的值可以取以下两常量值 adUseServer 常量值为2 使用服务器端提供的游标 为系统默认值 若设置为该值 则Recordset对象将Sort属性进行排序 AdUseClient 常量值为3 使用客户端提供的游标 若设置为该值 就能使用Sort属性对Recordset对象进行排序 2 Sort属性 该属性指定数据集将按哪些字段进行升序或降序排序 它可以设置或返回一个用逗号分隔的字段名排序字符串 其中的每个名称是Recordset中的Field 其语法格式如下 Recordset Sort SortOrder 其中SortOrder为指定的排序字段或若干个排序关键字组成的字符串 可以使用关键词ASC指定升序排序或使用关键词DESC指定降序排序 4与系统维护有关的属性 1 ActiveConnection属性 该属性用来设置或返回当前活动的连接对象所使用的连接命令字符串 如果指定了该参数 则ADO将根据指定的参数打开新连接 可以在打开Recordset之后更改ActiveConnection属性的值 以便连接到其它数据提供者 或者将该属性设置为Nothing 以便将Recordset与所有数据提供者断开 2 Source属性 该属性指示记录集对象中数据的来源 可以使用下列项之一 Command对象 SQL语句 表的名称或存储过程 该属性可以设置字符串值或Command对象引用 但是只返回字符串值 Source属性只能在Recordset对象打开以前设置 打开后该属性为只读 如果设置Source属性为Command对象 Recordset对象的ActiveConnection属性将继承指定Command对象的ActiveConnection属性值 但是 读取Source属性将不返回Command对象 而是将Command对象的CommandText 属性返回到设置Source属性的地方 如果Source属性是一个SQL语句 存储过程或表的名称 则可以通过调用Open方法传递相应的Options参数来优化性能 3 State属性 该属性是只读的 可应用于所有的对象 作用是返回其对象状态是打开还是关闭的 4 Status属性 该属性指示有关批量更新 或其它大量操作时的Recordset对象的当前状态 8 3 3记录集对象的方法 记录集对象有许多使用频率很高的方法 为方便编程将其分为以下几个部分 1打开与关闭记录集对象的方法 1 打开记录集的Open方法 Open方法用来打开一个基于ActiveConnection和Source属性的Recordset 还可以用来传递打开游标所需的所有信息 语法格式 Recordset Open Source ActiveConnection CursorType LockType Options Open方法后的参数均是可选项 可以在设置了记录集对象的相应属性后 直接调用记录集对象的Open方法打开记录集 记录集对象的属性及其Open方法中的相应参数 其关系如下 在记录集对象打开之前属性是可读写的 除非在执行Open方法时传送相应的参数 否则将使用缺省值来设置属性 如果传送参数 则它将覆盖相应的属性设置 并且用参数值更新属性设置 在打开记录集对象后 这些属性将变为只读 如果在Source参数中传送命令对象并且同时传递ActiveConnection参数 那么将产生错误 命令对象的ActiveConnection属性必须设置为有效的连接对象或有效的连接字符串 如果在Source参数中传送的不是命令对象 那么可以使用Options参数优化Source参数的计算 如果没有定义Options则性能将会下降 原因是ADO不能确定参数是SQL语句 存储过程还是表名 可以通过设置Options参数确定所用的Source类型 以指示ADO直接转到相关的代码 如果Options参数与Source类型不匹配 将产生错误 2 关闭记录集的Close方法在结束了记录集对象的操作后 可使用Close方法释放所有关联的系统资源 使用Close方法关闭记录集对象后 系统并没有将其占用的内存释放 要将对象从内存中完全删除 可将该对象变量设置为Nothing 在使用Open方法再次打开记录集对象前 一定要先使用Close方法将其关闭 否则ADO将给出错误信息 2有关记录移动的方法 1 MoveNumRecords方法 在记录集中向前或向后移动指定数目的记录数 当NumRecords参数值大于零时 则当前记录指针位置将向前 即向记录集的末尾方向 移动 相反 若NumRecords值小于零 则当前记录指针位置向后 即向记录集的开始方向 移动 但需注意在空的记录集上调用该方法将产生错误 2 MoveFirst方法 该方法将Recordset对象中的当前记录指针移动到记录集的第一条记录上 3 MoveNext方法 该方法将Recordset对象中的当前记录指针向后移动一个记录 如果在最后一个记录位置调用MoveNext方法 则ADO将当前记录设置到Recordset的尾记录之后 这时EOF属性值返回True 如果EOF属性为True时 再调用该方法 则ADO将产生错误 4 MovePrevious方法 该方法将Recordset对象中的当前记录指针向前移动一个记录 如果在第一个记录位置调用MovePrevious方法 则ADO将当前记录设置到Recordset的首记录之前 这时BOF属性将返回True 如果在BOF属性为True时 再调用该方法 则ADO将产生错误 如果Recordset对象不支持书签或游标向前移动 则MovePrevious方法将产生错误 5 MoveLast方法 该方法将Recordset对象中的当前记录指针移动到记录集的最后一条记录上 如果Recordset对象不支持书签 则MoveLast方法将产生错误 例如 假设想在一个记录集中反向移动 就可以使用MoveLast和MovePrevious方法 以及BOF属性 下例演示了该如何实现 程序见书中sample8 08 asp 图8 15sample8 08 asp运行结果 3编辑修改数据的方法 1 Supports方法 为方便判别Recordset对象的当前状态 可使用Supports方法确定Recordset对象是否支持特定的功能 返回的布尔型值指示数据提供者是否支持CursorOptions参数所标识的功能 该方法的语法格式如下 Boolean Recordset Supports CursorOptions 其中CursorOptions参数是一个类型为长整型的表达式 如果Recordset对象支持其相应常量在CursorOptions中的功能 那么Supports方法返回True 否则返回False 2 AddNew方法 该方法用于在数据库中添加一条新记录 语句格式如下 Recordset AddNew Fieldlist Values 其中 Fieldlist 添加记录中的单个 一组字段名或序列位置 Values 添加记录中的单个或一组字段的值 如果Fieldlist是数组 那么Values也必须是有相同成员数的数组 否则将发生错误 同时字段名的次序和数据类型必须与数组中相应字段值的次序相匹配 调用AddNew方法后 新记录将成为当前记录 并在调用Update方法后将所作的修改保存到新记录中 例如 用AddNew方法向表member中添加第33号会员记录 程序见书中sample8 09 asp 3 Update方法 该方法用于保存对Recordset对象的当前记录所做的所有修改 使用Update方法保存自从调用AddNew方法 或自从现有记录的任何字段值发生更改之后 对Recordset对象的当前记录所做的所有更改 条件是Recordset对象必须支持更新 Update方法的语法格式如下 Recordset Update FieldList Values 其中 FieldList 变体型时 代表单个字段名 变体型数组时 代表需要修改的若干字段名或序号位置 FieldList中的字段名必须用 括起来 Values 变体型时 代表单个值 变体型数组时 代表要修改的若干字段值 更新值的数据类型要与FieldList中对应的字段所规定的类型一致 4 CancelUpdate方法 该方法用于取消在调用Update方法前对当前记录或新记录所做的任何更改 在调用Update方法后将无法撤消对当前记录或新记录所做的更改 除非所做的更改是可以用RollbackTrans方法回卷的事务的一部分 或者是可以用CancelBatch方法取消批量更新的一部分 5 UpdateBatch方法 如果工作在批量更新模式下 当修改了Recordset对象中的一些数据后 可以使用UpdateBatch方法将Recordset对象中的所有更改提交到连接的数据库中 通常必须配合adLockBatchOptimistic的LockType属性一起使用 UpdateBatch方法的语法格式如下 Recordset UpdateBatchAffectRecords其中AffectRecords是一个可选参数 表示进行批次模式数据更新的条件 分述如下 adAffectCurrent 常量值为1 表示只针对当前指针位置的数据进行更新动作 adAffectGroup 常量值为2 表示只针对符合Filter属性的数据进行更新动作 adAffectAll 常量值为3 默认值 将当前Recordset对象内已修改的所有数据进行更新动作 6 CancelBatch方法 该方法将取消批次模式 batch 的数据更新动作 通常必须配合adLockBatchOptimistic的LockType属性一起使用 CancelBatch方法的语法格式如下 Recordset CancelBatchAffectRecords其中AffectRecords是一个可选参数 参见上面的UpdateBatch方法说明 7 Delete方法 该方法用于删除当前记录或一组记录 使用Delete方法可标记Recordset对象中的当前记录或一组记录以便删除 如果Recordset对象不允许删除将出现错误 在立即更新模式下执行该方法将进行立即删除操作 否则将在缓存中对删除的记录做一删除标记 实际的删除将在调用UpdateBatch方法时进行 4Recordset记录集的方法 1 NextRecordset 该方法清除Recordset对象并返回下一个记录集 2 Requery方法 该方法通过重新执行对象所基于的查询 来更新Recordset对象中的记录数据 通过重新执行原始命令来查看自上次查询以来所增加 修改或删除的记录 即刷新数据集中的全部内容 调用该方法相当于先后调用了Close和Open方法 3 Resync方法 该方法从连接的数据库中刷新当前Recordset对象中的记录数据 使用该方法可使当前Recordset中的记录数据与当前连接的数据库保持同步 与Requery方法不同 Resync方法不重新执行Recordset对象的现行命令 连接数据库中的其他用户添加的新记录将不可见 5Recordset对象的查询方法通过Recordset对象的Find方法 可在记录集中检索到符合条件的第一个记录 这个被找到的记录将成为当前记录 在一般的数据库应用程序中 这种查询是必不可少的 同样在网络数据库中也是一种重要的数据查询方法 Find方法语法格式如下 Recordset FindCriteria SkipRows SearchDirection Start 其中 Criteria 为一个字符串类型的查询条件 可以由字段 比较运算符和预定的查询值组成 具体组成参见Filter属性中的CriteriaString SkipRows 为一长整型值 该选项可以省略 缺省时 表示从当前记录开始查询 如设置该参数 则表示查询时从当前记录开始跳过SkipRows个记录后再查询 这些被跳过的记录将不予理会 SearchDirection为查询方向 可为以下常量之一 AdSearchForward 常量值为1 默认值 往后 即最后一个记录 方向查询 AdSearchBackward 常量值为 1 往前 即第一个记录 方向查询 8 3 4记录集对象数据集合 记录集对象提供的数据集合包括Fields数据集合与Properties数据集合等 Fields数据集合中包含Recordset对象的所有Field数据字段对象 Properties数据集合中则是包含Recordset对象的所有属性 1Fields数据集合Fields数据集合所提供的方法与属性有Count属性 Refresh方法与Item方法等 分述如下 Count属性 该属性可用来取得Fields数据集合中所包含的Field对象个数 Refresh方法 该方法可以重新取得Fields数据集合中所包含的所有Field对象 Item方法 该方法可以用来取得Fields数据集合中所包含的所有Field对象 该方法有一个参数 表示所要取得的Field对象索引值 这个索引值通常介于0到Count属性值 1之间 2Field对象Field对象是负责记录记录集对象的每一项字段相关属性 Field对象所提供的属性 方法及数据集合包括Name属性 Value属性 Type属性 Attribute属性 NumericScale属性 Precision属性 ActualSize属性 DefineSize属性 OriginalValue属性 UnderlyingValue属性 AppendChunk方法 GetChunk方法及Properties数据集合等 分述如下 Name属性 该属性表示对象属性的名称 Value属性 该属性表示对象属性的属性值 Type属性 该属性表示对象属性的数据类型 与Property对象的Type属性相同 Attributes属性和Properties集合 可决定对于给定字段哪些类型的功能受到支持 NumericScale 该属性表示数据字段所被允许存储的数字个数 Precision属性 该属性表示数据字段所被允许的最大数字 通常表示此数据字段的有效数字 ActualSize属性 该属性可返回给定字段中数据的实际大小 DefinedSize属性 该属性可返回已声明的字段大小 OriginalValue属性 该属性表示数据字段的内容是从第一次启动或是在调用Update方法前的值 UnderlyingValue属性 该属性表示数据库中所取出来的数据与OriginalValue属性有所不同 AppendChunk方法和GetChunk方法 可处理包含长二进制或长字符数据的字段值 8 3 5记录集对象的使用 综合使用记录集对象的属性和方法可以编写出功能强大的数据库应用程序 利用记录集对象中的一些属性 可以精确地控制记录指针的行为 提高检索和更新数据的能力 尽管连接对象和命令对象简化了连接数据库和查询任务 但它们与记录集对象相比仍有许多不足 所有一般的ASP应用程序均使用记录集对象来管理检索和修改数据 由于记录集对象的AddNew Delete Update方法操作数据集的效率较低 推荐使用SQL语句来完成相应操作 1用记录集显示记录记录集可以用来代表表中的记录 与表一样 一个记录集包含一条或多条记录 行 每个记录包括一个或多个域 字段 在任何时刻 只有一条记录是当前记录 要创建记录集对象的一个实例 可以使用连接对象的Execute 方法 当使用Execute 方法从一个数据库返回查询结果时 一个记录集对象就会被自动创建 这里有一个例子 在这个脚本中 使用一个SQLSELECT语句从一个表member中返回了所有的记录 Execute 方法返回一个记录集 该记录集被分配给变量RS 然后关闭了这个记录集 最后 关闭与数据库的连接 记录集中的每一条记录都对应于表member中的一条记录 要显示记录集中的所有记录 只要简单地做一个循环就可以 正如上一章的程序sample9 03 asp所示 在程序sample9 03 asp的脚本中 DOWHILE LOOP循环用来扫描记录集RS中的每一条记录 把每个记录的hy name字段值输出到浏览器 这段脚本显示了表member中的所有记录 当在一个记录集对象中收集了数据后 当前记录总是第一条记录 程序sample10 03 asp调用了记录集对象的MoveNext方法 使当前记录移到下一条记录 当所有的记录都显示完时 记录集对象的EOF属性的值将变为true 从而退出DOWHILE LOOP循环 一个记录集对象有一个域集合 包含一个或多个域对象 一个域对象代表表中的一个特定的字段 例如 在sample9 03 asp的脚本中 使用了表达式RS hy name 来显示字段hy name 实际上 可以通过许多中途径显示一个字段的值 下面的每一个表达式都可以显示字段hy name的值 RS hy name RS 0 RS Fields hy name RS Fields 0 RS Fields Item hy na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论