zoukankan      html  css  js  c++  java
  • 关于ADO之AddNew,UPdate与Identity列

    关于ADO的AddNew方法与Update方法,MSDN上的说明如下所述。

    这里主要说下这两个方法与Identiey列的关系:

    如果在AddNew的这个表上有Identity列,当在调用Update方法后,对应的这个Identity列的值为Update后的@@Identity值;如果在当前表上有触发器,并操作到其他有Identity列的表,则要注意,在Update后得到的这个Identity列值可能不是所要得到的值。

    AddNew 方法

    创建可更新 Recordset 对象的新记录。

    语法:recordset.AddNew FieldList, Values

    参数:

    FieldList   可选。新记录中字段的单个名称、一组名称或序号位置。

    Values   可选。新记录中字段的单个或一组值。如果 Fields 是数组,那么 Values 也必须是有相同成员数的数组,否则将发生错误。字段名称的次序必须与每个数组中的字段值的次序相匹配。

    说明:

    使用 AddNew 方法创建和初始化新记录。通过 adAddNew 使用 Supports 方法可验证是否能够将记录添加到当前的 Recordset 对象。在调用 AddNew 方法后,新记录将成为当前记录,并在调用 Update 方法后继续保持为当前记录。如果 Recordset 对象不支持书签,当移动到其他记录时将无法对新记录进行访问。是否需要调用 Requery 方法访问新记录则取决于所使用的游标类型。如果在编辑当前记录或添加新记录时调用 AddNew,ADO 将调用 Update 方法保存任何更改并创建新记录。AddNew 方法的行为取决于 Recordset 对象的更新模式以及是否传送 Fields Values 参数。在立即更新模式(调用 Update 方法时提供者会立即将更改写入基本数据源)下,调用不带参数的 AddNew 方法可将 EditMode 属性设置为 adEditAdd。提供者将任何字段值的更改缓存在本地。调用 Update 方法可将新记录传递到数据库并将 EditMode 属性重置为 adEditNone。如果传送了 Fields Values 参数,ADO 则立即将新记录传递到数据库(无须调用 Update),且 EditMode 属性值没有改变 (adEditNone)。在批更新模式(提供者缓存多个更改并只在调用 UpdateBatch 时将其写入基本数据源)下,调用不带参数的 AddNew 方法可将 EditMode 属性设置为 adEditAdd。提供者将任何字段值的更改缓存在本地。调用 Update 方法可将新的记录添加到当前记录集并将 EditMode 属性重置为 adEditNone,但在调用 UpdateBatch 方法之前提供者不将更改传递到基本数据库。如果传送 Fields Values 参数,ADO 则将新记录发送给提供者以便缓存;需要调用 UpdateBatch 方法将新记录传递到基本数据库。如果 Unique Table 动态属性被设置,并且 Recordset 是对多个表执行 JOIN 操作的结果,那么,AddNew 方法只能将字段插入到由 Unique Table 属性所命名的表中。

    Update方法

    保存对 Recordset 对象的当前记录所做的所有更改。

    语法:recordset.Update Fields, Values

    参数

    Fields   可选。变体型,代表单个名称;或变体型数组,代表需要修改的字段(一个或多个)名称及序号位置。

    Values   可选。变体型,代表单个值;或变体型数组,代表新记录中字段(单个或多个)值。

    说明:

    使用 Update 方法保存自调用 AddNew 方法或更改现有记录中任何字段值以来所作的所有更改。Recordset 对象必须支持更新。要设置字段值,请进行下列某项操作:

    • Field 对象的 Value 属性赋值,并调用 Update 方法。

    • Update 调用中传送字段名和值作为参数。

    • Update 调用中传送字段名数组和值数组。

    在使用字段和值的数组时,两个数组中必须有相等数量的元素,同时字段名的次序必须匹配字段值的次序。字段和值的数量及次序不匹配将产生错误。如果 Recordset 对象支持批更新,那么可以在调用 UpdateBatch 方法之前将一个或多个记录的多个改动缓存在本地。如果在调用 UpdateBatch 对象时正在编辑当前记录或者添加新的记录,那么 ADO 将自动调用 Update 方法以便在将批更改传送到提供者之前保存挂起的更改。如果在调用 Update 方法之前移动出正在添加或编辑的记录,那么 ADO 将自动调用 Update 以便保存更改。如果希望取消对当前记录所做的任何更改或者放弃新添加的记录,则必须调用 CancelUpdate 方法。在调用 Update 方法后当前记录仍为当前记录。如果设置了 Unique Table 动态属性,并且 Recordset 是对多个表执行 JOIN 操作的结果,那么,Update 方法将无法更新多个表的任何主要关键字。此外,Update 只能更新在 Unique Table 属性中指定的表中的字段。

  • 相关阅读:
    C++中虚继承的作用
    游戏程序设计学习初窥简单DirectX代码实现
    vue4.x更改默认端口 larry
    Visual studio 2010几个比较酷的功能
    Web前端编程:勿混淆NodeList与Array
    代码规范之署名
    一则中文文件名引起的问题
    C# WebService调用及数据并行处理
    2010年终总结
    关于DotNetNuke
  • 原文地址:https://www.cnblogs.com/MyFavorite/p/1450702.html
Copyright © 2011-2022 走看看