ODBC 経由で PowerBuilder から Salesforce Data Cloud のデータ に接続
CData ODBC Driver for Salesforce Data Cloud は、ODBC をサポートするあらゆるプラットフォームや開発技術から使用できます。PowerBuilder もその一つです。この記事では、Salesforce Data Cloud のデータ に接続し、Database Painter や DataWindow などのコントロールからクエリを実行する方法を説明します。
Salesforce Data Cloud にODBC データソースとして接続
まだ設定していない場合は、ODBC DSN(データソース名)で接続プロパティを指定します。これはドライバーインストールの最後のステップです。Microsoft ODBC データソースアドミニストレーターを使用して、ODBC DSN を作成・設定できます。
それでは、Salesforce Data Cloud への認証方法を設定していきましょう。Salesforce Data Cloud では、OAuth 標準による認証をサポートしています。
OAuth 認証
AuthScheme をOAuth に設定してください。
デスクトップアプリケーション
CData 製品では、デスクトップでの認証を簡略化する埋め込みOAuth アプリケーションを提供しています。
また、Salesforce Data Cloud コンソールで設定および登録するカスタムOAuth アプリケーションを介してデスクトップから認証することも可能です。詳しくは、ヘルプドキュメントのカスタムOAuth アプリの作成をご確認ください。
接続する前に、以下のプロパティを設定してください。
- InitiateOAuth:GETANDREFRESH。InitiateOAuth を使用すれば、繰り返しOAuth の交換を行ったり、手動でOAuthAccessToken を設定する必要がなくなります
- OAuthClientId(カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントID
- OAuthClientSecret(カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット
接続すると、CData 製品がデフォルトブラウザでSalesforce Data Cloud のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えてください。
以下のようにドライバーがOAuth プロセスを完了します。
- コールバックURL からアクセストークンを取得します
- 古いトークンの期限が切れた際は、新しいアクセストークンを取得します
- OAuthSettingsLocation にOAuth 値を保存し、接続間で永続化します
Web アプリケーションやヘッドレスマシンを含むその他のOAuth 認証方法については、ヘルプドキュメントをご確認ください。
Salesforce Data Cloud 用 ODBC ドライバ のプロファイルを作成
以下の手順に従って、Database Painter ツールを使用し、Salesforce Data Cloud の ODBC DSN(データソース名)に基づいてデータベースプロファイルを作成します。Database Painter では、ウィザードや UI を使用してSalesforce Data Cloud のデータを操作できます。
- PowerBuilder で、[ツール] -> [Database Painter]をクリックします。
- Database Painter の [オブジェクト] ウィンドウで、ODBC ノードを右クリックし、[新しいプロファイル] をクリックします。
- [接続] タブで、プロファイル名を入力し、[データソース] メニューで Salesforce Data Cloud DSN を選択します。
- テーブルを表示・編集するには、テーブルを右クリックして [データの編集] -> [グリッド] をクリックします。
PowerBuilder コントロールで Salesforce Data Cloud のデータ を使用
標準の PowerBuilder オブジェクトを使用して ODBC データソースに接続し、クエリを実行できます。以下の例では、Salesforce Data Cloud のデータ を DataWindow に取得する方法を示します。次のコードを open メソッドに追加してください。
SQLCA.DBMS = "ODBC" SQLCA.DBParm = "ConnectString='DSN=CData SalesforceDataCloud Source'" CONNECT USING SQLCA; dw_account.SetTransObject(SQLCA); dw_account.Retrieve();