SOQLで全てのフィールドを選択(SELECT *)

Force.comではSQL ServerOracleといったDBMSで利用していたSQL
SELECT * が利用できない、、
固定でフィールド名を記述すると変更するときが
影響がでかいのでやだ、ということで以下のようなメソッドを作って
文字列結合させてSOQLを発行したらできたよ。

// SObjectのフィールドをカンマ区切りで返す
public String getAllFieldsNames(Schema.SObjecttype type) {
    List<String> result = New List<String>{};

    Map<String, Schema.sObjectField> omap =
        type.getDescribe().fields.getMap();

    for(String s: omap.keySet()) {
        // カスタム項目だけ選択
        if (s.endsWith('__c')) {
            result.add(s);
        }
    }

    return String.join(result, ',');
}

// SOQL発行
List<Account> lsta = Database.query(
        ' SELECT ID, Name, ' + getAllFieldsNames(Account.SObjecttype) +
        ' FROM Account'
);

標準のオブジェクト(Account等)は標準の項目を取得すると、
いくつか利用できない項目があるので、カスタム項目だけ取得するようにしたよ。

日々精進。ほんならね