关于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 对象的更新模式以及是否传送 FieldsValues 参数。在立即更新模式(调用 Update 方法时提供者会立即将更改写入基本数据源)下,调用不带参数的 AddNew 方法可将 EditMode 属性设置为 adEditAdd。提供者将任何字段值的更改缓存在本地。调用 Update 方法可将新记录传递到数据库并将 EditMode 属性重置为 adEditNone。如果传送了 FieldsValues 参数,ADO 则立即将新记录传递到数据库(无须调用 Update),且 EditMode 属性值没有改变 (adEditNone)。在批更新模式(提供者缓存多个更改并只在调用 UpdateBatch 时将其写入基本数据源)下,调用不带参数的 AddNew 方法可将 EditMode 属性设置为 adEditAdd。提供者将任何字段值的更改缓存在本地。调用 Update 方法可将新的记录添加到当前记录集并将 EditMode 属性重置为 adEditNone,但在调用 UpdateBatch 方法之前提供者不将更改传递到基本数据库。如果传送 FieldsValues 参数,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 属性中指定的表中的字段。

转载于:https://www.cnblogs.com/MyFavorite/archive/2009/05/06/1450702.html

关于ADO之AddNew,UPdate与Identity列相关推荐

  1. 插入递归引用Identity列的记录

    在SQL Server中有个表,设计如下:             实例序号    PI_sequence              根实例ID    PI_rootid              父 ...

  2. Replication的犄角旮旯(五)--关于复制identity列

    Replication的犄角旮旯(五)--关于复制identity列 原文:Replication的犄角旮旯(五)--关于复制identity列 <Replication的犄角旮旯>系列导 ...

  3. 使用PowerShell SQL Server DBATools的IDENTITY列阈值

    In this article, we will review PowerShell SQL Server module DBATools to identify IDENTITY columns a ...

  4. Mysql中怎样使用update更新某列的数据减去指定值

    场景 Mysql数据库中两列来存储坐标数据 此两列的类型为decimal 由于坐标系的坐标原点调整,需要将此两列的x与y统一更新,减去指定的值 实现 update signallight set si ...

  5. 浅谈SQL Server identity列的操作方法

    SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便.但它有时还会带来一些麻烦. 示例一:当表中被删除了某些数据的时候,自增长列的编号就不再是一个连线的数列 ...

  6. mysql identity 获取_如何获取MySQL中Identity列的种子值?

    为此,您可以使用SHOW VARIABLES命令-SHOW VARIABLES LIKE 'auto_inc%'; 输出结果 这将产生以下输出-+--------------------------+ ...

  7. DB2 SQLSTATE:428C9,不能将ROWID列指定为INSERT或UPDATE的目标列。

    1.出错sql -- 插入当前时间 insert into (UPDATE_TIME) values (CURRENT_TIMESTAMP) 2.出错原因: -- 数据库建表语句中定义UPDATE_T ...

  8. 【SQL开发实战技巧】系列(九):一个update误把其他列数据更新成空了?Merge改写update!给你五种删除重复数据的写法!

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  9. ADO.NET使用经验集

    介绍 本文为ADO.NET应用程序提供实现最佳性能.可伸缩性和功能的解决方案:它介绍了ADO.NET中可用对象的使用,并为优化ADO.NET应用程序的设计提供了一些建议. 本文包括: l .NET框架 ...

  10. SQL点滴31—SQL语句中@@IDENTITY和@@ROWCOUNT区别

    原文:SQL点滴31-SQL语句中@@IDENTITY和@@ROWCOUNT区别 SQL语句中@@IDENTITY和@@ROWCOUNT区别 在一条 INSERT.SELECT INTO 或大容量复制 ...

最新文章

  1. 技术专家预测未来25大颠覆性硬趋势
  2. python3 base64 加解密
  3. Visual Studio Code打开终端控制台
  4. 马斯克的脑机接口,距离我们还有多远?
  5. spring jdbcTemplate使用queryForList示例
  6. Android6.0 Log的工作机制
  7. hbuilder打包ios_ios开发证书的作用及申请步骤
  8. 复选框 ComboBox 1129
  9. Java 日期格式工具类
  10. wps编号无法继续_wps自动编号取消不了
  11. 表头冻结列冻结_如何在Excel中冻结和取消冻结行和列
  12. Java获取实体类字段名
  13. Java入门需要了解(面向对象之接口-十四)
  14. 2021-10-16windows系统还原点创建/查看/配置/删除
  15. Dubbo配置加载问题
  16. 10G SR光模块取消ER调试可行性分析
  17. 89元尝鲜智能家居 天猫精灵方糖智联3件套简评
  18. 业务建模七大关键应用场景
  19. Linux 定时任务shell脚本定时移动服务器日志文件到指定目录下
  20. py和ipynb文件互相转化

热门文章

  1. 最容易被你忽略的Mac神级功能!Mac访达里一切皆可标记
  2. 怎么在Mac上格式化USB驱动器
  3. docker-compose 学习:通过 Dockerfile 和 build 指令搭建 LNMP
  4. iOS底层探索之Block(五)——Block源码分析(__block 底层都做了什么?)
  5. iOS开发特效源码:swift轮播图导航渐变跑马灯分段选择下拉菜单物流时间轴
  6. 《程序化广告实战》一 导读
  7. BZOJ 3509 分块FFT
  8. Ubuntu 16 安装JDK1.8
  9. Makefile的学习笔记
  10. android开发的学习路线