C/C++教程

SalesforceDML及Database方法

本文主要是介绍SalesforceDML及Database方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

DML及Database方法:

在apex中通过soql查询可以使用两种方式,使用DML语句或者使用Database的方法。

使用DML语句和使用Database类的方法对于我们来说用的都很多,并且都很常见。对于数据库常见的操作:增,删,改,查,通过DML语句和Database类的方法实现如下所示:

DML语句:

查找:[queryString]、添加:insert、修改:update、删除:delete、添加或修改:upsert

Database类的方法:

查找:Database.query()、添加:Database.insert()、修改:Database.update()、    删除:Database.delete()、添加或者修改:Database.upsert()

在功能层次上来说,使用DML语句和使用Database类的方法均能实现DML相关操作,不过二者使用起来是有区别的:

1.使用DML语句进行批量操作时,比如批量添加,当有一个有错误的时候,便会报错,之前添加的内容便添加失败,但是使用Database的方法时,可以设置参数来控制,当有错误出现的时候是否跳过本条记录进行下一条记录的操作;

2.使用Database的方法可以进行事务处理,使用DML语句没法实现此功能。

对于我们来说,使用哪种方式比较好?

 1.普通增删改查,遇到异常就抛出的可以选择DML语句,毕竟写起来方便

 2.如果需要用到批处理,需要使用Database类

 3.在批处理中,遇到错误继续下一条处理的使用Database类的方法

 4.需要用到事务,对操作有可能进行回滚操作的使用Database类的方法。

常用Database类的方法介绍

普通操作篇:

1.public static sObject[] query(String queryString)

此方法用于查询,与DML中[queryString]功能相同,eg:

 

注意:使用List接收查询结果,如果查询结果为空的情况下,上面的accountList并不是null,而是()代表长度为空,所以如果判断当前查询是否有值,

不能通过accountList == null来判断,而是需要通过accountList.size() == 0来判断

2.public static Database.SaveResult insert(sObject recordToInsert, Boolean allOrNone)

  public static Database.SaveResult[] insert(sObject[] recordsToInsert, Boolean allOrNone)

 这两个方法功能与DML语句中的insert相似,区别为多了一个allOrNone参数,当设置成false的情况下,允许部分插入成功,当设置成true的情况下,其功能和DML的insert相同。当需求中要求可以部分插入成功,将不成功的信息显示出来情况下,使用Database.insert是最好不过了,Database.SaveResult类用于保存插入,修改的记录是否成功,如果失败情况下的失败信息等讯息。此种方式可以常常用于批处理操作中。

3.public static Database.SaveResult update(sObject recordToUpdate, Boolean allOrNone)

   public static Database.SaveResult[] update(sObject[] recordsToUpdate, Boolean allOrNone)

 这两个方法功能与DML语句中的update相似,其中allOrNone与insert描述相同,这里不作解释。

4.public static Database.DeleteResult delete(ID recordID, Boolean allOrNone)

   public static Database.DeleteResult[] delete(ID[] recordIDs, Boolean allOrNone)

 这两个方法功能与DML语句中的delete相似,其中allOrNone与insert描述相同,这里不做解释。

这篇关于SalesforceDML及Database方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!