Connection.execAsync

SQLを非同期的に実行します。

構文

Connection.execAsync( sql , success_callback , cleanup_callback );
SQLのパラメータを使用しないタイプ
Connection.execAsync( sql , param1 , param2 , ... , success_callback , cleanup_callback );
SQLのパラメータを使用し、メソッドの引数として値を渡してバインドするタイプ

引数

sql
実行するSQL文指定します。SQLパラメータとして$1、$2、...を使用することができます。詳しくはPostgreSQLのマニュアルをご覧ください。
param1、param2、...
SQLに埋め込んだパラメータにバインドする値
success_callback
SQLの実行が完了したときに呼び出されるコールバック関数。この関数の中で、データベースから取得されたデータの処理などを行います。
success_callbackは引数としてResult型のオブジェクトを受け取ります。受け取ったResultオブジェクトはこの関数の中でreleaseを呼び出してリソースを開放する必要があります。
cleanup_callback
SQLの実行などがすべて完了した段階で呼び出されるコールバック関数。この関数の中でConnectionの解放などの後処理を実行します。

戻り値

オブジェクトが返ります。このオブジェクトの「isError」を調べることで、SQLが実行されたかどうかを調べることができます。エラーが発生した場合は、errorMessageにその内容が格納されます。

解説

SQLを非同期的に実行します。
SQLには$1、$2、・・・の形式でパラメータを埋め込むことができます。SQLに埋め込んだパラメータには、param1、param2、としてexecAsyncメソッドに渡した値がバインドされます。
このメソッドは非同期に実行されます。SQLの処理が完了するとsuccess_callbackが呼ばれます。データベースから取得したデータはsuccess_callbackに渡されるResultオブジェトを通じて取り出すことができます。

コード

var conn = sph.dbConnect();//データベースに接続
var sql = "SELECT * FROM keiba.race WHERE kaisaibi=$1 AND place=$2";
var retval = conn.execAsync( sql , '20170312' , '06' , function( res ){
        if ( res.isError ){
            console.log( res.errorMessage );//エラーメッセージをコンソールに出力
            return;
        }
        var rows = res.fetchAll();
        console.log( rows );//コンソールに取得した行の内容を出力
        res.release();//Resultオブジェクトのリソースを開放
    },
    function( conn ){
        conn.release();//Connectionオブジェクトのリソースを開放
    }
);

エラー時の挙動

DBへのSQL発行に失敗した場合

DBへの接続に異常が発生した場合など、SQLの発行が失敗した場合はexecAsync()の戻り値のオブジェクトのisErrorフィールドにtrueがセットされます。この場合、success_callback、cleanup_callbackが呼ばれることはありません。

SQLのシンタックスエラーなどの場合

success_callbackに渡されるResultオブジェクトのisErrorフィールドにtrueがセットされ、errorMessageにエラー内容が格納されています。success_callback、cleanup_callbackは呼び出されます。