JavaScript SQL アダプター

improve this page | report issue

概説

SQL アダプターは、任意の SQL データ・ソースと通信するように設計されています。プレーン SQL 照会またはストアード・プロシージャーを使用できます。

データベースに接続するには、JavaScript コードで、特定のデータベース・タイプの JDBC コネクター・ドライバーが必要です。特定のデータベース・タイプに対応する JDBC コネクター・ドライバーを別個にダウンロードして、プロジェクトで依存関係としてそのドライバーを追加する必要があります。依存関係の追加方法について詳しくは、Java アダプターおよび JavaScript アダプターの作成チュートリアルの『依存関係』セクションを参照してください。

このチュートリアルおよび付属のサンプルでは、アダプターを使用して MySQL データベースに接続する方法について学習します。

前提条件: 最初に必ず、JavaScript アダプターチュートリアルをお読みください。

XML ファイル

XML ファイルには、設定およびメタデータが含まれています。

adapter.xml ファイルで、以下のパラメーターを宣言します。

  • JDBC ドライバー・クラス
  • データベース URL
  • ユーザー名
  • パスワード

<?xml version="1.0" encoding="UTF-8"?>
<mfp:adapter name="JavaScriptSQL"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:mfp="http://www.ibm.com/mfp/integration"
	xmlns:sql="http://www.ibm.com/mfp/integration/sql">

	<displayName>JavaScriptSQL</displayName>
	<description>JavaScriptSQL</description>
	<connectivity>
		<connectionPolicy xsi:type="sql:SQLConnectionPolicy">
			<dataSourceDefinition>
				<driverClass>com.mysql.jdbc.Driver</driverClass>
				<url>jdbc:mysql://localhost:3306/mobilefirst_training</url>
			    <user>mobilefirst</user>
    			<password>mobilefirst</password>
			</dataSourceDefinition>
		</connectionPolicy>
	</connectivity>
</mfp:adapter>
  • xsi:type: 必須。 この属性の値は sql:SQLConnectionPolicy に設定される必要があります。
  • dataSourceDefinition: オプション。 データ・ソースへの接続に必要なパラメーターを含みます。アダプターは、各要求で接続を作成します。以下に例を示します。
    <connectionPolicy xsi:type="sql:SQLConnectionPolicy">
        <dataSourceDefinition>
            <driverClass>com.mysql.jdbc.Driver</driverClass>
            <url>jdbc:mysql://localhost:3306/mysqldbname</url>
            <user>user_name</user>
            <password>password</password>
        </dataSourceDefinition>
    </connectionPolicy>
  • dataSourceJNDIName: オプション。 アプリケーション・サーバーで提供されているデータ・ソースの JNDI 名を使用して、データ・ソースに接続します。アダプターは、JNDI 名に関連付けられたサーバー接続プールから接続を受け取ります。アプリケーション・サーバーには、データ・ソースを構成する方法が用意されています。詳しくは、アプリケーション・サーバーへの MobileFirst Server のインストールを参照してください。以下に例を示します。
                            
    <connectionPolicy xsi:type="sql:SQLConnectionPolicy">
        <dataSourceJNDIName>my-adapter-ds</dataSourceJNDIName>
    </connectionPolicy>

connectionPolicy を構成して、アダプター XML ファイル内でプロシージャーを宣言します。

<procedure name = "getAccountTransactions1" />

JavaScript 実装

アダプター JavaScript ファイルを使用してプロシージャー・ロジックを実装します。
SQL ステートメントを実行するには以下の 2 つの方法があります。

  • SQL ステートメント照会
  • SQL ストアード・プロシージャー

SQL ステートメント照会

  1. SQL 照会を変数に割り当てます。これは、常に関数のスコープの外部で行う必要があります。
  2. 必要に応じて、パラメーターを追加します。
  3. MFP.Server.invokeSQLStatement メソッドを使用して、作成した照会を呼び出します。
  4. 結果をアプリケーションまたは別のプロシージャーに返します。

    // 1. SQL 照会を変数に (関数のスコープの外部で)割り当てます。
    // 2. 必要に応じてパラメーターを追加します。
    var getAccountsTransactionsStatement = "SELECT transactionId, fromAccount, toAccount, transactionDate, transactionAmount, transactionType " +
     "FROM accounttransactions " +
     "WHERE accounttransactions.fromAccount = ? OR accounttransactions.toAccount = ? " +
     "ORDER BY transactionDate DESC " +
     "LIMIT 20;";
    
     // 準備した SQL 照会を呼び出し、呼び出し結果を返します。
    function getAccountTransactions1(accountId){
    // 3. 「MFP.Server.invokeSQLStatement」メソッドを使用して、作成した照会を呼び出します。
    // 4. 結果をアプリケーションまたは別のプロシージャーに返します。
         return MFP.Server.invokeSQLStatement({
            preparedStatement : getAccountsTransactionsStatement,
            parameters : [accountId, accountId]
         });
    }
    

SQL ストアード・プロシージャー

SQL ストアード・プロシージャーを実行するには、MFP.Server.invokeSQLStoredProcedure メソッドを使用します。SQL ストアード・プロシージャーの名前を呼び出しパラメーターとして指定します。

// ストアード SQL プロシージャーを呼び出し、呼び出し結果を返します。
function getAccountTransactions2(accountId){
  // SQL ストアード・プロシージャーを実行するには、「MFP.Server.invokeSQLStoredProcedure」メソッドを使用します。
  return MFP.Server.invokeSQLStoredProcedure({
    procedure : "getAccountTransactions",
    parameters : [accountId]
  });
}

複数のパラメーターの使用

SQL 照会で単一または複数のパラメーターを使用する場合には、関数で変数を受け入れ、変数を invokeSQLStatement または invokeSQLStoredProcedure のパラメーターに配列で渡してください。

var getAccountsTransactionsStatement = "SELECT transactionId, fromAccount, toAccount, transactionDate, transactionAmount, transactionType " +
	"FROM accounttransactions " +
	"WHERE accounttransactions.fromAccount = ? AND accounttransactions.toAccount = ? " +
	"ORDER BY transactionDate DESC " +
	"LIMIT 20;";

//作成した SQL 照会を呼び出し、呼び出し結果を返します。
function getAccountTransactions1(fromAccount, toAccount){
	return MFP.Server.invokeSQLStatement({
		preparedStatement : getAccountsTransactionsStatement,
		parameters : [fromAccount, toAccount]
	});
}

呼び出し結果

結果は、JSON オブジェクトとして取得されます。

{
  "isSuccessful": true,
  "resultSet": [{
    "fromAccount": "12345",
    "toAccount": "54321",
    "transactionAmount": 180.00,
    "transactionDate": "2009-03-11T11:08:39.000Z",
    "transactionId": "W06091500863",
    "transactionType": "Funds Transfer"
  }, {
    "fromAccount": "12345",
    "toAccount": null,
    "transactionAmount": 130.00,
    "transactionDate": "2009-03-07T11:09:39.000Z",
    "transactionId": "W214122\/5337",
    "transactionType": "ATM Withdrawal"
  }]
}
  • isSuccessful プロパティーは、呼び出しが正常に終了したかどうかを定義します。
  • resultSet は、返されたレコードの配列です。
  • クライアント・サイドの resultSet オブジェクトにアクセスする場合: result.invocationResult.resultSet
  • サーバー・サイドの resultSet オブジェクトにアクセスする場合: result.ResultSet

サンプル・アダプター

ここをクリック してアダプター Maven プロジェクトをダウンロードします。

アダプター Maven プロジェクトには、前に説明した JavaScriptSQL アダプターが含まれています。
また、Utils フォルダーに SQL スクリプトも含まれています。

使用例

テスト時には、アカウント値を配列 (["12345"]) で渡す必要があります。

Last modified on August 23, 2017