public static SforceServiceWrapper StartSession(string username, string password, string securityToken)
 {
     SforceServiceWrapper service = new SforceServiceWrapper();
     LoginResult lr = service.login(username, password + securityToken);
     service.Url = lr.serverUrl;
     return service;
 }
 public static SforceServiceWrapper GetSession(string sessionId)
 {
     SforceServiceWrapper service = new SforceServiceWrapper();
     service.SessionHeaderValue = new SessionHeader();
     service.SessionHeaderValue.sessionId = sessionId;
     return service;
 }
        static void Main(string[] args)
        {
            //Create Salesforce binging with username and password
            //sforceService = SalesforceSession.StartSession("user name", "password", "security token");
            sforceService = SalesforceSession.StartSession("*****@*****.**", "scmy_209_XX_!", "KwgCnbIa0QRHEEpPvXV6DaZb");

            List<sObject> accounts = AccountProvider.retrieve10Accounts(sforceService);
            foreach (sObject account in accounts)
                Console.WriteLine(string.Format("{0} {1}", account.Id, account.Any[1].InnerText));

            Console.WriteLine("");
            Console.WriteLine("Press any key to continue.");
            Console.ReadKey();
        }
        public static void DeletesObjects(SforceServiceWrapper sforceService, List<sObject> sObjects)
        {
            if (sObjects.Count == 0) return;

            List<string> deleteBatch = new List<string>();
            foreach (sObject sobject in sObjects)
            {
                deleteBatch.Add(sobject.Id);
                //insert 200 records at a time
                if (deleteBatch.Count == MODIFY_BATCH_SIZE)
                {
                    DeleteResult[] results = sforceService.delete(deleteBatch.ToArray());
                    Helper.CheckResultErrors(results);

                    deleteBatch.Clear();
                }
            }
            //insert remaining records
            if (deleteBatch.Count > 0)
            {
                DeleteResult[] results = sforceService.delete(deleteBatch.ToArray());
                CheckResultErrors(results);
            }
        }
 public static List<sObject> retrieve10Accounts(SforceServiceWrapper sforceService)
 {
     return Helper.QuerysObjects(sforceService, "SELECT Id, Name FROM Account LIMIT 10");
 }
        public static List<sObject> QuerysObjects(SforceServiceWrapper sforceService, string soql)
        {
            sforceService.QueryOptionsValue = new sforce.QueryOptions();
            sforceService.Timeout = SOAP_TIMEOUT;
            sforceService.QueryOptionsValue.batchSize = RETRIEVE_BATCH_SIZE;
            sforceService.QueryOptionsValue.batchSizeSpecified = true;

            List<sObject> result = new List<sObject>();
            QueryResult qr = sforceService.query(soql);

            bool queryMore = true;
            while (queryMore && (qr.size > 0))
            {
                foreach (sObject sobject in qr.records)
                    result.Add(sobject);

                if (qr.done)
                    queryMore = false;
                else
                    qr = sforceService.queryMore(qr.queryLocator);
            }
            return result;
        }
        public static void InsertsObjects(SforceServiceWrapper sforceService, List<sObject> sObjects)
        {
            if (sObjects.Count == 0) return;

            List<sObject> insertBatch = new List<sObject>();
            foreach (sObject sobject in sObjects)
            {
                insertBatch.Add(sobject);
                //insert 200 records at a time
                if (insertBatch.Count == MODIFY_BATCH_SIZE)
                {
                    SaveResult[] results = sforceService.create(insertBatch.ToArray());
                    Helper.CheckResultErrors(results);

                    insertBatch.Clear();
                }
            }
            //insert remaining records
            if (insertBatch.Count > 0)
            {
                SaveResult[] results = sforceService.create(insertBatch.ToArray());
                CheckResultErrors(results);
            }
        }