C# サンプル集 |
Visual Basic 中学校 > C# サンプル集 > C# サンプル集目次 > Azure > Cosmos DB >
テーブルAPI で検索結果を少しずつ取得する
2021/6/20
この記事は Azure Cosmos DB テーブル API を対象にしています。
まず20件取得して、その後続きの20件を取得して、その後もう20件取得する。
前提
- Azure Cosmos DB のアカウントがあり、テーブルAPIのデータベース上に TestTable というテーブルが存在する。
- NuGet で Microsoft.Azure.Cosmos.Table パッケージをインストールしている。 → NuGetの使用方法
- using Microsoft.Azure.Cosmos.Table; がソースコードの冒頭付近に記載されている。
メモ:接続文字列の確認方法
//▼Cosmos DBに接続
//接続文字列は環境に応じて指定してください。
string connectionString = "DefaultEndpointsProtocol=https;AccountName=xxxxxx;AccountKey=U2V0IHlvdXIgYWNjb3VudCBrZXkgZnJvbSBhenVyZSBwb3J0YWw=;TableEndpoint=https://xxxxxx.table.cosmos.azure.com:443/;";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
//▼テーブルへの参照を取得
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("TestTable");
//▼検索の設定
TableQuery query = new TableQuery(); //検索条件なし。つまり全件を対象とします。
var ro = new TableRequestOptions() { TableQueryMaxItemCount = 20 }; // 最大取得件数 20件。
int index = 0;
//▼最初の20件を取得
System.Diagnostics.Debug.WriteLine($"▼最初の{ro.TableQueryMaxItemCount} 件を取得します。");
var results = table.ExecuteQuerySegmented(query, null, ro);
//結果出力
results.ToList().ForEach(entity => System.Diagnostics.Debug.WriteLine($"{++index} {entity.PartitionKey} {entity.RowKey}"));
//▼次の20件を取得
if (results.ContinuationToken != null)
{
System.Diagnostics.Debug.WriteLine($"▼次の{ro.TableQueryMaxItemCount} 件を取得します。");
results = table.ExecuteQuerySegmented(query, results.ContinuationToken, ro);
//結果出力
results.ToList().ForEach(entity => System.Diagnostics.Debug.WriteLine($"{++index} {entity.PartitionKey} {entity.RowKey}"));
}
//▼その次の20件を取得
if (results.ContinuationToken != null)
{
System.Diagnostics.Debug.WriteLine($"▼その次の{ro.TableQueryMaxItemCount} 件を取得します。");
results = table.ExecuteQuerySegmented(query, results.ContinuationToken, ro);
//結果出力
results.ToList().ForEach(entity => System.Diagnostics.Debug.WriteLine($"{++index} {entity.PartitionKey} {entity.RowKey}"));
}
15件ずつ最後まで取得する
前提
- Azure Cosmos DB のアカウントがあり、テーブルAPIのデータベース上に TestTable というテーブルが存在する。
- NuGet で Microsoft.Azure.Cosmos.Table パッケージをインストールしている。 → NuGetの使用方法
- using Microsoft.Azure.Cosmos.Table; がソースコードの冒頭付近に記載されている。
メモ:接続文字列の確認方法
//▼Cosmos DBに接続
//接続文字列は環境に応じて指定してください。
string connectionString = "DefaultEndpointsProtocol=https;AccountName=xxxxxx;AccountKey=U2V0IHlvdXIgYWNjb3VudCBrZXkgZnJvbSBhenVyZSBwb3J0YWw=;TableEndpoint=https://xxxxxx.table.cosmos.azure.com:443/;";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
//▼テーブルへの参照を取得
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("TestTable");
//▼検索の設定
TableQuery query = new TableQuery(); //検索条件なし。つまり全件を対象とします。
var ro = new TableRequestOptions() { TableQueryMaxItemCount = 15 }; // 最大取得件数 15件。
//▼15件ずつ取得
int index = 0;
TableContinuationToken token = null;
do
{
System.Diagnostics.Debug.WriteLine($"▼{ro.TableQueryMaxItemCount} 件を取得します。");
var results = table.ExecuteQuerySegmented(query, token, ro);
//結果出力
results.ToList().ForEach(entity => System.Diagnostics.Debug.WriteLine($"{++index} {entity.PartitionKey} {entity.RowKey}"));
token = results.ContinuationToken;
} while (token != null);
参考
.NET Standard SDK を使用した Azure Cosmos DB Table API | Microsoft Docs
クイック スタート:.NET での Table API の使用 - Azure Cosmos DB | Microsoft Docs