Visual Basic サンプル集 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 > 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の使用方法
- Imports Microsoft.Azure.Cosmos.Table がソースコードの冒頭付近に記載されている。
メモ:接続文字列の確認方法
'▼Cosmos DBに接続
'接続文字列は環境に応じて指定してください。
Dim connectionString As String = "DefaultEndpointsProtocol=https;AccountName=xxxxxx;AccountKey=U2V0IHlvdXIgYWNjb3VudCBrZXkgZnJvbSBhenVyZSBwb3J0YWw=;TableEndpoint=https://xxxxxx.table.cosmos.azure.com:443/;"
Dim storageAccount As CloudStorageAccount = CloudStorageAccount.Parse(connectionString)
'▼テーブルへの参照を取得
Dim tableClient As CloudTableClient = storageAccount.CreateCloudTableClient()
Dim table As CloudTable = tableClient.GetTableReference("TestTable")
'▼検索の設定
Dim query As New TableQuery() '検索条件なし。つまり全件を対象とします。
Dim ro As New TableRequestOptions() With { .TableQueryMaxItemCount = 20 } ' 最大取得件数 20件。
Dim index As Integer = 0
'▼最初の20件を取得
Debug.WriteLine($"▼最初の{ro.TableQueryMaxItemCount} 件を取得します。")
Dim results = table.ExecuteQuerySegmented(query, Nothing, ro)
'結果出力
results.ToList().ForEach(Sub(entity)
index = index + 1
Debug.WriteLine($"{index} {entity.PartitionKey} {entity.RowKey}")
End Sub)
'▼次の20件を取得
If results.ContinuationToken IsNot Nothing Then
Debug.WriteLine($"▼次の{ro.TableQueryMaxItemCount} 件を取得します。")
results = table.ExecuteQuerySegmented(query, results.ContinuationToken, ro)
'結果出力
results.ToList().ForEach(Sub(entity)
index = index + 1
Debug.WriteLine($"{index} {entity.PartitionKey} {entity.RowKey}")
End Sub)
End If
'▼その次の20件を取得
If results.ContinuationToken IsNot Nothing Then
Debug.WriteLine($"▼その次の{ro.TableQueryMaxItemCount} 件を取得します。")
results = table.ExecuteQuerySegmented(query, results.ContinuationToken, ro)
'結果出力
results.ToList().ForEach(Sub(entity)
index = index + 1
Debug.WriteLine($"{index} {entity.PartitionKey} {entity.RowKey}")
End Sub)
End If
15件ずつ最後まで取得する
前提
- Azure Cosmos DB のアカウントがあり、テーブルAPIのデータベース上に TestTable というテーブルが存在する。
- NuGet で Microsoft.Azure.Cosmos.Table パッケージをインストールしている。 → NuGetの使用方法
- Imports Microsoft.Azure.Cosmos.Table がソースコードの冒頭付近に記載されている。
メモ:接続文字列の確認方法
'▼Cosmos DBに接続
'接続文字列は環境に応じて指定してください。
Dim connectionString As String = "DefaultEndpointsProtocol=https;AccountName=xxxxxx;AccountKey=U2V0IHlvdXIgYWNjb3VudCBrZXkgZnJvbSBhenVyZSBwb3J0YWw=;TableEndpoint=https://xxxxxx.table.cosmos.azure.com:443/;"
Dim storageAccount As CloudStorageAccount = CloudStorageAccount.Parse(connectionString)
'▼テーブルへの参照を取得
Dim tableClient As CloudTableClient = storageAccount.CreateCloudTableClient()
Dim table As CloudTable = tableClient.GetTableReference("TestTable")
'▼検索の設定
Dim query As New TableQuery() '検索条件なし。つまり全件を対象とします。
Dim ro As New TableRequestOptions() With { .TableQueryMaxItemCount = 15 } ' 最大取得件数 15件。
'▼15件ずつ取得
Dim index As Integer = 0
Dim token As TableContinuationToken = Nothing
Do
Debug.WriteLine($"▼{ro.TableQueryMaxItemCount} 件を取得します。")
Dim results = table.ExecuteQuerySegmented(query, token, ro)
'結果出力
results.ToList().ForEach(Sub(entity)
index = index + 1
Debug.WriteLine($"{index} {entity.PartitionKey} {entity.RowKey}")
End Sub)
token = results.ContinuationToken
Loop While (token IsNot Nothing)
参考
.NET Standard SDK を使用した Azure Cosmos DB Table API | Microsoft Docs
クイック スタート:.NET での Table API の使用 - Azure Cosmos DB | Microsoft Docs
VB6では
XMLHttpRequestの機能でREST APIを呼び出すことで、同じことを実現できるかもしれません。