salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)

 

salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的。salesforce中的数据库使用的是Force.com 平台的数据库,数据表一行数据可以理解成一个sObject变量。接下来主要讲解一下sObject以及单表的简单DML操作。

详细了解sObject以及DML操作请参看官方PDF文档或查看下方链接进行参考:

https://developer.salesforce.com/trailhead/en/module/apex_database

一)sObject

通过上面的描述,可能很多人都会云里雾里,没有理解什么是sObject.看一下官方的定义:sObject指的是存储在Force.com 平台数据库中的任何的对象。sObject变量代表一行数据并且在Apex中只能使用SOAP API对象名称中声明的一行数据。比如在Force.com 数据库中有Account数据表,表相对应的API 名称为Account(图1),则

Account account1 = new Account();//account1则为一个sObject对象。

                          

图1                                                                               图2

Force.com 平台数据库操作不像平时大家比较熟知的数据库,比如Oracle,SqlServer,MySql等。

当在salesforce中新建一个数据表时,操作步骤如下所示:

1.使用账号登录自己的salesforce主页,点击setup-->点击左侧Build-->点击Create-->点击Objects,或者在上方搜索栏直接搜索Objects(图2);

2.点击右侧主页面信息的New Custom Object;

3.在Label中输入要建立的数据库的名称,比如创建Student,则在Label中输入Student,鼠标指向Object Name 则自动填充Student,点击save按钮(图3);

4.创建Student表成功(图4),其API Name被平台自动设置为Student__c 。

图3

图4

现在主要看一下图4,当Student表创建成功的时候,API Name 赋值为Student__c,这个则为Student表的sObject对象,即Student__c对象为Student表的一行记录的引用。当我想查询或者操作Student表数据时,可以通过Student__c对象操作。举个例子,当Student表中有一个Name字段时,其Name字段的API Name 为Name__c,则:

1
2
3
Student__c student = new Student__c();
student.Name__c = 'zero.zhang';
insert student;

通过上面三行代码则执行了student表一行数据的插入。相信通过上述例子大家对于sObject有了一个较好的了解。

既然了解了sObject是什么,如何操作,接下来考虑如何创建数据表中的列。创建数据表中的列通过如下步骤:

1)通过点击图2中的Objects,找到Label为Student的表,并点击进入(图5);

2)拖动到下方Custom Fields & Relationships模块点击new(图6),其中图6中上面Standard Fields为系统创建的列,详情参见官方文档;

3)选择Data Type,即数据列的类型,这些类型以后会单独讲解,选择Text类型,然后下一步;

4)Field Label 输入Name,鼠标移动到Field Name则自动输入Name,Length设置为50,(图7)接下来均为默认操作next,直到点击save按钮;

5)保存以后可以在Custom Fields & Relationships模块中看到新建的Name列,其API Name为Name__c(图8),如果想要建立多个列,请重复操作以上步骤。

图5

                

图6                                                                                                                     图7

图8

二)SOQL

SOQL全称为Salesforce Object Query Language.通过SOQL语句可以操作sObject的增删改查等操作。下面还是以上面Student表进行举例。

Student表的API Name 为Student__c,所以在apex中,只要对Student__c对象进行相应的DML操作,即为对Student数据表操作。

注:apex代码通过操作表以及列对应的API Name来对表进行增删改查操作处理。

查询语句返回List<sObject>数据,查询语句也可以进行相应的复杂处理,例如进行where查询,include,exclude,limit等等操作,此部分内容太多,此篇只讲述最基本的查询操作,以后篇会详细探讨SOQL语句细节以及多表关联的查询等操作。

where语句中经常伴随着参数传递,比如查询学生表中姓名为zhangsan的个数等,如果采用拼串很容易造成错误,并且代码不易阅读。Apex提供了一种便捷的方式,使用 ':' 符号来声明查询语句中使用的变量,类似于Java中的PreparedStatement。

查询有两种方式,一种为通过[select ...]方式来进行查询,此种方式不利于SQL语句的拓展,故不推荐此种方式;

第二种方式为通过构造查询字符串,通过Database.query(queryString)方法来检索数据,此种方式灵活性扩展性强,推荐此种方式。

另外注意的是:在Force.com平台数据库中,查询不能使用'*'符号代表查询全部字段,如果查询全部字段需要全部列出来。

Student表表结构如下图所示,分为系统自定义的列以及用户自己声明的列。

查询语句例子如下:

1
2
3
4
5
6
7
8
9
10
11
12
//查询列表
String args1 = '%zhang%';
String args2 = 'zhangsan';
List<Student__c> students = [select Id,Name__c from Student__c where Name__c like :args1 limit 10000];//查询名称含zhang的学生列表
/*
上述语句等同与:
String query = 'select Id,Name__c from Student__c where Name__c like :args1 limit 10000';
List<Student__c> students = Database.query(query);
*/
//查询表数据条数
String countQuery = 'select count(Id) from Student__c where Name__c = :args2 ';//查询名称为zhangsan的学生个数
Integer studentsCount = Database.countQuery(countQuery);

注意:salesforce对查询记录条数以及DML操作次数均有严格的限制:查询条数一次不能超过50000条,DML操作一次不能超过10000次,如果超过限制则抛异常。如果需要大量的进行DML操作,请使用批处理方式进行数据处理。 

本篇所列出的SOQL操作只是冰山一角,SOQL在开发中所占比重很大,所以希望本篇起到抛砖引玉作用,供初学者入门。初学者如果想要深入详细了解此部分内容请详细查看官方文档进行学习sObject以及SOQL相关知识。如果对本篇内容描述有错误的地方,请及时指正,欢迎大家共同探讨,谢谢。下一篇将会讲解多表关联下的SOQL以及SOQL查询深入知识。

【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)的更多相关文章

  1. 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解

    salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解   建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...

  2. salesforce 零基础开发入门学习(八)数据分页简单制作

    本篇介绍通过使用VF自带标签和Apex实现简单的数据翻页功能. 代码上来之前首先简单介绍一下本篇用到的主要知识: 1.ApexPages命名空间 此命名空间下的类用于VF的控制. 主要的类包括但不限于 ...

  3. salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解

    建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema Builder查看表结构以及多表之间的关联关系,可以登录后点击setup在左侧搜索框输入schema ...

  4. 【转载】salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable

    salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable   本篇知识参考:https://developer.salesforce.com/trailhead/for ...

  5. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

  6. 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

    salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载   目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...

  7. 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建

    salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建   VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...

  8. salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)

    salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesforce中的数据库使用的是Force.com 平台的数据库,数据表一行数据可以理解成一个sObject变量 ...

  9. salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

    目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资料确实比较难.为了避免想要零基础学习的人 ...

随机推荐

  1. Oracle 11g 监听很慢,由于监听日志文件太大引起的问题(Windows 下)

    现象:Windows 操作系统的Oracle 数据库,使用sqlplus 连接(不指定实例名)连接很快,程序连接或使用连接工具或在Net Manager 中测试连接都需要花费约三四十秒的时间(程序连接 ...

  2. Javescript——变量声明的区别

    原文链接:ES6 Syntax and Feature Overview View on GitHub Keyword Scope Hoisting Can Be Reassigned Can Be ...

  3. React之概述(待续)

    原文链接 MDN上有关JavaScript的内容 箭头函数, 类, 模板字符串, let, const Babel REPL

  4. ubuntu18.04 install rar

    sudo apt-get update #如果好久没有更新资源建议update一次 sudo apt-get install rar #安装rar sudo apt-get install unrar ...

  5. FastCGI模式下安装Xcache

    PHP执行的时候,会被编译成opcode,然后 zend引擎会执行opcode.也就是说,如果你两次执行同一个php程序,每次执行,他都要把php代码编译成opcodexcache的意义在于,当你第一 ...

  6. iOS- Core Foundation对象与OC对象相对转换

    对ARC盲目依赖的同学: 1过度使用block后,无法解决循环引用问题 2遇到底层Core Foundation对象,需要自己手工管理它们的引用计数时,显得一筹莫展 first:对于底层Core Fo ...

  7. CentOS 7 vi详解

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  8. office word 設置默認的縮放為100%, office word set default Zoom to 100% permanently

    如題,今天剛好遇到一個老師不知道什麽原因造成Microsoft office word 每次打開都會縮放到70% ,所以google 了一下,還真有解決方法. 只要將默認的 使用者範本檔 Normal ...

  9. js前端 多条件筛选查询

    一.前言 在做项目中,遇到多条件筛选案例.实现完成以后,我将我做的代码分享在这里,希望可以帮助到其他朋友. 二.效果截图 三.实现代码 首先我先类型.类别.职位分成三块来处理,如果传到服务器端的话,就 ...

  10. iostat (转https://www.cnblogs.com/ftl1012/p/iostat.html)

    iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.iostat也有一个弱 ...