CData ADO.NET Provider for Salesforce とは

CData ADO.NET Provider for Salesforce は、.NET アプリケーションからライブの Salesforce データに接続できる強力なツールです。この ADO.NET Provider を使用すると、従来のデータベースにアクセスするのと同じように、Salesforce Data Provider オブジェクトを使用してデータに接続・アクセスできます。Visual Studio のサーバーエクスプローラー、おなじみのクラスを使用したコード、DataGridView、GridView、DataSet などのデータコントロールを通じて Salesforce Data Provider を利用できます。

この記事では、CData の Salesforce ADO.NET Provider の主要機能を確認し、ADO.NET Provider を使用して Salesforce に接続し、特定のテーブルからデータをクエリし、Salesforce のデータを更新し、ストアドプロシージャを実行する方法をご紹介します。

主要機能

  • Salesforce Web Services API を使用した CRUD(作成、読み取り、更新、削除)操作の包括的なサポート
  • ADO.NET Entity Framework(EF 5 & 6)、LINQ to Datasets などをサポート
  • 32ビットおよび64ビットオペレーティングシステムをサポート
  • .NET Framework 4.0 以降および .NET Standard 2.0(.NET Core 2.1 以降、.NET 6.0)をサポート
  • 標準の Visual Studio ウィザードを使用して Salesforce にデータバインド
  • カスタム Salesforce エンティティのサポートを含む
  • Salesforce からの表形式、サマリー、マトリックスレポートへのアクセスをサポート

OAuth を使用した Salesforce への接続

CData ADO.NET Provider for Salesforce は、ユーザー資格情報または OAuth 標準のいずれかを使用した Salesforce への認証をサポートしています。以下のセクションでは、組み込みの OAuth 資格情報を使用して Salesforce への接続を認証する例を紹介します:

C#

using (SalesforceConnection connection = new SalesforceConnection("AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;")) { connection.Open(); }

VB.NET

Using connection As New SalesforceConnection(" AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;") connection.Open End Using

接続すると、プロバイダーはデフォルトブラウザで Salesforce の OAuth エンドポイントを開きます。ログインしてアプリケーションに権限を付与してください。その後、プロバイダーは以下のように OAuth プロセスを完了します:

  • コールバック URL からアクセストークンを抽出します。
  • 古いアクセストークンの有効期限が切れた場合、新しいアクセストークンを取得します。
  • OAuth 値を OAuthSettingsLocation に保存し、接続間で永続化します。

注意:上記の例では、認証プロセスを簡素化するために組み込みの OAuth アプリケーションを使用しています。CData は、デスクトップアプリケーションまたはヘッドレスマシンからの認証用に組み込みの OAuth 資格情報を提供しています。Web アプリケーションから接続するには、カスタム OAuth アプリケーションを作成する必要があります。

CData Salesforce ADO.NET Provider の認証スキームと接続プロパティの詳細については、CData ドキュメントページをご覧ください:CData Salesforce ADO.NET Provider ドキュメント

ADO.NET Provider の使用方法

READ(読み取り)

以下のコード例では、Salesforce に接続し、SELECT SQL クエリを実行して Account テーブルの BillingState と Name カラムを返します。このコードでは、SalesforceDataAdapter を使用してデータを取得しています:

C#

string connectionString = "AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;"; using (SalesforceConnection connection = new SalesforceConnection(connectionString)) { SalesforceDataAdapter dataAdapter = new SalesforceDataAdapter( "SELECT BillingState, Name FROM Account", connection); DataTable table = new DataTable(); dataAdapter.Fill(table); Console.WriteLine("Contents of Account."); foreach (DataRow row in table.Rows) { Console.WriteLine("{0}: {1}", row["BillingState"], row["Name"]); } }

VB.NET

Dim connectionString As String = "AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;" Using connection As New SalesforceConnection(connectionString) Dim dataAdapter As New SalesforceDataAdapter("SELECT BillingState, Name FROM Account", connection) Dim table As New DataTable() dataAdapter.Fill(table) Console.WriteLine("Contents of Account.") For Each row As DataRow In table.Rows Console.WriteLine("{0}: {1}", row("BillingState"), row("Name")) Next End Using

WRITE(書き込み)

C#

string connectionString = "AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;"; using (SalesforceConnection connection = new SalesforceConnection(connectionString)) { SalesforceDataAdapter dataAdapter = new SalesforceDataAdapter( "SELECT BillingState, Name FROM Account", connection); dataAdapter.UpdateCommand = new SalesforceCommand( "UPDATE Account SET Name = @Name " + "WHERE Id = @Id", connection); dataAdapter.UpdateCommand.Parameters.Add(new SalesforceParameter("@Name", "Name", DbType.String )); dataAdapter.UpdateCommand.Parameters.Add(new SalesforceParameter("@Id", "Id", DbType.String )); dataAdapter.UpdateCommand.Parameters[1].SourceVersion = DataRowVersion.Original; DataTable table = new DataTable(); dataAdapter.Fill(table); DataRow firstrow = table.Rows[0]; firstrow["Name"] = "Jon Doe"; dataAdapter.Update(table); Console.WriteLine("Rows after update."); foreach (DataRow row in table.Rows) { Console.WriteLine("{0}: {1}", row["BillingState"], row["Name"]); } }

VB.NET

Dim connectionString As String = "AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;" Using connection As New SalesforceConnection(connectionString) Dim dataAdapter As New SalesforceDataAdapter( "SELECT BillingState, Name FROM Account", connection) dataAdapter.UpdateCommand = New SalesforceCommand( "UPDATE Account SET Name = @Name " + "WHERE Id = @Id", connection) dataAdapter.UpdateCommand.Parameters.Add(new SalesforceParameter("@Name", "Name" DbType.String )) dataAdapter.UpdateCommand.Parameters.Add(new SalesforceParameter("@Id", "Id", DbType.String)) dataAdapter.UpdateCommand.Parameters(1).SourceVersion = DataRowVersion.Original Dim table As New DataTable() dataAdapter.Fill(table) Dim firstrow As DataRow = table.Rows(0) firstrow("Name") = "Jon Doe" dataAdapter.Update(table) Console.WriteLine("Rows after update.") For Each row As DataRow In table.Rows Console.WriteLine("{0}: {1}", row("BillingState"), row("Name")) Next End Using

ストアドプロシージャ

以下のコード例では、ローカルの添付ファイルを Salesforce にアップロードしてエンティティに関連付けるための UploadAttachment ストアドプロシージャを実行しています:

C#

string connectionString = "AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;"; using (SalesforceConnection connection = new SalesforceConnection(connectionString)) { SalesforceCommand cmd = new SalesforceCommand("EXECUTE UploadAttachment @ObjectId = '0018Z00002nz4TkMAR', @FullPath = 'C:\csv samples\mycsvfile.csv'", connection); cmd.Parameters.Add(new SalesforceParameter("@ObjectId", "Insert")); // 必要に応じて他のパラメータを追加... SalesforceDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { for (int i = 0; i < rdr.FieldCount; i++) { Console.WriteLine(rdr.GetName(i) + " --> " + rdr[i]); } Console.WriteLine(); } }

VB.NET

Dim connectionString As String = "AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;" Using connection As New SalesforceConnection(connectionString) Dim cmd As New SalesforceCommand("EXECUTE CreateJob Action = @Action;", connection) cmd.Parameters.Add(New SalesforceParameter("@Action", "Insert")) ' 必要に応じて他のパラメータを追加... Dim rdr As SalesforceDataReader = cmd.ExecuteReader() While rdr.Read() For i As Integer = 0 To rdr.FieldCount - 1 Console.WriteLine(rdr.GetName(i) + " --> " + rdr(i)) Next Console.WriteLine() End While End Using

.NET アプリケーションで Salesforce とのシームレスな接続を実現

Salesforce データの可能性を最大限に引き出したいとお考えですか?CData の Salesforce ADO.NET Provider を使用すれば、.NET アプリケーションを Salesforce データとシームレスに統合できます。CData ADO.NET Provider for Salesforce のコミュニティライセンスを取得すれば、使い慣れた SQL を使用して、個人の .NET プロジェクトでデータにアクセスするためのライブラリを永久に無料で利用できます。今すぐライセンスをリクエストして、Salesforce 連携アプリの構築を始めましょう!