Developer

DatabaseクラスのDML操作【セールスフォース】

Developer
この記事は約3分で読めます。

こんにちは、アンダーソンです。
今回はDML操作でもDatabaseクラスを使ったDML操作についておさらいしていきます。
実はこれも上級デベロッパーの試験問題に出てきたので自分の勉強ついでにまとめます。

スポンサーリンク

DML操作

Salesforce、ApexではDML操作は2種類用意されています。
一般的によく使われているのはInsertやupdate、Deleteなどかと思います。
今更ですが、使い方としては

Contact con = new Contact(LastName = 'テスト' + i ,LeadSource  = 'Web');
insert con;

といったように操作する動詞+レコードなどを指定します。
これが1種類目です。

そしてもう1つのDML操作というのがDatabaseクラスのメソッドを使ったやり方です。

Databaseクラス

以前別の記事でDatabaseクラスについて書きました。
その際はロールバックで使っていたんですが、Databaseクラスは他にもたくさんメソッドを持っているので興味がある方はぜひ調べて見てください。

記事はこちら
リファレンス

今回はDMLのメソッドについてです。
使い方は下記のような形をとります。

List<Contact> conList = new List<Contact>();
for (Integer i = 0 ; i < 100 ; i++) {
    Contact con = new Contact(LastName = 'テスト' + i ,LeadSource  = 'Web');
    conList.add(con);
}
List<Database.SaveResult> sr = Database.insert(conList,false);

DatabaseクラスでのDML操作では戻り値があります。
Database.SaveResult型で返却されるので後ほど結果を確認することができます。
また、()内にある引数のfalseはもしDML操作に失敗したレコードがあったとしても
そのまま操作を完了
し、対象のデータ以外のレコードは操作を終えることがありません。
上記のコードを実際に実行して、デバックで見てみましょう。

含まれるのは、エラー内容、ID、成功したかどうかです。
せっかくなのでわざとエラー起こしてみました。
LastNameではなくFirstNameにして同じコードを実行してみました。

このようになります。
返ってきているのはエラー内容(何がだめで失敗したのか)、Idは失敗しているのでエラーです。
そして成功したかどうかはもちろんfalseです。

まとめ

他にもupdate、deleteなどの基本DMLに加えて、外部オブジェクトに対する同期、非同期でのDML操作もできるので、しっかり試験対策として抑えておくのがいいと思います。

その他の開発に関する記事はこちらです。

Developerも含めた試験問題にチャレンジしてみましょう。

コメント