2016-05-06 9 views
3

私はcouchbaseデータベースの新機能で、初めてリモートcouchbaseサーバーに接続するコードを記述しようとしています。私はapp.configファイルとprogram.csファイルがあるC#でコンソールアプリケーションを作成しました。C#からリモートcouchbaseデータベースへのデータベース接続の作成方法

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <configSections> 
    <sectionGroup name="couchbaseClients"> 
     <section name="couchbase" 
       type="Couchbase.Configuration.Client.Providers.CouchbaseClientSection, Couchbase.NetClient"/> 
    </sectionGroup> 
    </configSections> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <couchbaseClients> 
    <couchbase useSsl="false" operationLifeSpan="1000"> 
     <servers> 
     <add uri="http://xxx.xxx.xxx.xxx:8091/pools"></add> 
     <add uri="http://xxx.xxx.xxx.xxx:8091/pools"></add> 
     </servers> 
     <buckets> 
     <add name="default" useSsl="false" Username="xxxxxx" password="xxxxx" operationLifespan="2000"> 
      <connectionPool name="custom" maxSize="10" minSize="5" sendTimeout="12000"></connectionPool> 
     </add> 
     </buckets> 
    </couchbase> 
    </couchbaseClients> 
</configuration> 

を次のように私のapp.configファイルがあると

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Couchbase; 
using Enyim.Caching.Memcached; 
using Newtonsoft.Json; 
using System.Configuration; 

namespace CouchBase_ConnectionTester 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (var cluster = new Cluster("couchbaseClients/couchbase")) 
      { 
       using (var bucket = cluster.OpenBucket()) 
       { 

       } 
      } 
     } 
    } 
} 

私はコードをデバッグしようとすると、それはコードの行でエラーがスローされますが、以下のように私のProgram.csファイルがあります

0123を次のように

エラーメッセージである

'Couchbase.Cluster'の型初期化子が例外をスローしました。

は、構成セクションから「共通/ログ

をCommon.Loggingするための構成を取得できませんでしこれで私を助けてください、次のように

内部例外があります。ありがとうございました

答えて

2

残念ながら、この特定の設定で表示されているエラーを再現できませんでした。しかし、私はあなたの質問に答えている: "どのようにC#からリモートcouchbaseデータベースにデータベース接続を作成する"。

CData ADO.NET Providerは、Couchbaseデータをリレーショナルデータベースのようにアクセスできるドライバです。これは、使い慣れた.NETデータベース機能を組み込んだ標準ベースのドライバにN1QL REST APIをラップすることによって行われます。バケツから照会

は、次のコードのように簡単です:

string connectionString = "User='myusername';Password='mypassword';Server='http://couchbase40'"; 
using (CouchbaseConnection connection = new CouchbaseConnection(connectionString)) { 
    CouchbaseCommand cmd = new CouchbaseCommand("SELECT * FROM Customer", connection); 
    CouchbaseDataReader rdr = cmd.ExecuteReader(); 

    while (rdr.Read()) { 
    Console.WriteLine(String.Format("\t{0} --> \t\t{1}", rdr["Name"],  rdr["TotalDue"])); 
    } 
} 

あなたは2016ドライバhereの無料ベータビルドをダウンロードすることができます。

+0

回答を使用して、データベースに接続できました。唯一の事私はselectコマンドを実行しようとすると、「 [500]が指定されたコマンドを実行できませんでした:設定システムは初期化に失敗しました」と、私はエラーを取得し、ある は、エラーがスローラインは ' ですCouchbaseCommand cmd = new CouchbaseCommand( "SELECT * FROM KVS"、接続); CouchbaseDataReader rdr = cmd.ExecuteReader(); ' ExecuteReaderはエラーが発生した行です –

+0

エラーを解決できました。これは設定ファイルからのものです。おかげで –

+0

私はあなたが物事を働かせることができたことをうれしく思っています!将来このエラーが発生した場合は、設定ファイルで行った変更をお知らせください。 –

1

Couchbaseの.Netドライバでは、plsはhereの指示に従って正しく設定されていることを確認します。

次のコードを試して、別のエラーが発生していないかどうかを確認してください。

 var config = new ClientConfiguration 
     { 
      Servers = new List<Uri> { 
       new Uri("http://10.0.0.XX:8091/pools") 
      }, 
      UseSsl = false, 
      DefaultOperationLifespan = 1000, 
      BucketConfigs = new Dictionary<string, BucketConfiguration> 
      { 
       {"default", new BucketConfiguration 
       { 
        BucketName = "default", 
        UseSsl = false, 
        Password = "", 
        DefaultOperationLifespan = 2000, 
        PoolConfiguration = new PoolConfiguration 
        { 
        MaxSize = 10, 
        MinSize = 5, 
        SendTimeout = 12000 
        } 
       } 
      } 
      } 
     }; 

     Cluster cbCluster = new Cluster(config); 
     Document<object> cbDoc = new Document<dynamic> { 
         Id = _key, 
         Content = new 
         { 
          id = "a" 
         } 
        }; 

     //UPSERT 
     var upsert = cbBucket.Upsert(cbDoc); 
     .... 
関連する問題