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は呼び出されます。