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"]) で渡す必要があります。

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on February 28, 2020