Have you ever wanted to do an SQL SELECT * statement in SOQL? Well here's the workaround. Generally, I would recommend that you only query for data that you need, however I have been using this on my current project where the data model constantly changes.
To use, copy and paste this code into your org and modify the 3 lines with // modify as needed at the end.
// Initialize setup variablesString objectName = 'Contact'; // modify as neededString query = 'SELECT';Map<String, Schema.SObjectField> objectFields = Schema.getGlobalDescribe().get(objectName).getDescribe().fields.getMap();
// Grab the fields from the describe method and append them to the queryString one by one.for(String s : objectFields.keySet()) { query += ' ' + s + ', ';}
// Manually add related object's fields that are needed.query += 'Account.Name,'; // modify as needed
// Strip off the last comma if it exists.if (query.subString(query.Length()-1,query.Length()) == ','){ query = query.subString(0,query.Length()-1);}
// Add FROM statementquery += ' FROM ' + objectName;
// Add on a WHERE/ORDER/LIMIT statement as neededquery += ' WHERE firstName = \'test\''; // modify as needed try { List<Contact> contacts = database.query(query);} catch (QueryException e){ //perform exception handling}