nitinkgarg
11/30/2017 - 3:38 AM

Working with SObjects

Account acct = new Account(Name='SFDC Account');
insert acct;

// Once the account is inserted, the sObject will be 
// populated with an ID.
// Get this ID.
ID acctID = acct.ID;

// Add a contact to this account.
Contact mario = new Contact(
    FirstName='Mario',
    LastName='Ruiz',
    Phone='415.555.1212',
    AccountId=acctID);
insert mario;
Contact[] contactsDel = [SELECT Id FROM Contact WHERE LastName = 'Smith'];
delete contactsDel;
// Syntax
upsert sObject | sObject[] [field]
// Example
upsert sObjectList Account.Fields.MyExternalId;
//---------------------- Detailed Example -----------------------------
// Insert the Josh contact
Contact josh = new Contact(FirstName='Josh',LastName='Kaplan',Department='Finance');       
insert josh;

// Josh's record has been inserted
//   so the variable josh has now an ID
//   which will be used to match the records by upsert
josh.Description = 'Josh\'s record has been updated by the upsert operation.';

// Create the Kathy contact, but don't persist it in the database
Contact kathy = new Contact(FirstName='Kathy',LastName='Brown',Department='Technology');

// List to hold the new contacts to upsert
List<Contact> contacts = new List<Contact> { josh, kathy };

// Call upsert
upsert contacts;

// Result: Josh is updated and Kathy is created.
// Create a list of contacts
List<Contact> conList = new List<Contact> {
    new Contact(FirstName='Joe',LastName='Smith',Department='Finance'),
        new Contact(FirstName='Kathy',LastName='Smith',Department='Technology'),
        new Contact(FirstName='Caroline',LastName='Roth',Department='Finance'),
        new Contact(FirstName='Kim',LastName='Shain',Department='Education')};
            
// Bulk insert all contacts with one DML call
insert conList;

// List to hold the new contacts to update
List<Contact> listToUpdate = new List<Contact>();

// Iterate through the list and add a title only
//   if the department is Finance
for(Contact con : conList) {
    if (con.Department == 'Finance') {
        con.Title = 'Financial analyst';
        // Add updated contact sObject to the list.
        listToUpdate.add(con);
    }
}

// Bulk update all contacts with one DML call
update listToUpdate;
sObject sobj1 = new Account(Name='Trailhead');
sObject sobj2 = new Book__c(Name = 'Workbook 1');
// Use get and set method to access fields from generic sObject

// Cast a generic sObject to an Account
Account acct = (Account) myGenericSObject;
// Now, you can use the dot notation to access fields on Account
String name = acct.Name;
String phone = acct.Phone;
// Create an account with the field values
Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployee=100);
// OR
Account acct = new Account();
acct.Name = 'Acme';
acct.Phone = '(415)555-1212';
acct.NumberOfEmployees = 100;

//Insert the account using DML
insert acct;

//Id is auto assigned to new records
// Get the new ID on the inserted sObject argument
ID acctID = acct.ID;