获取microsoft azure tablestorage中所有表的列表

时间:2016-10-10 19:41:10

标签: c# azure azure-table-storage

我正在尝试获取Microsoft Azure存储上所有表的列表。如果我知道表的名称,我能够成功连接并从表中读取行。有一种方法可以获得具有以下定义的表列表:

public virtual IEnumerable<CloudTable> ListTables(string prefix = null, TableRequestOptions requestOptions = null, OperationContext operationContext = null);

现在我的问题是,如果我没有传递任何参数,我希望得到所有表的列表。我试过传递&#34; *&#34;对于前缀也没有任何结果。

这是我的代码:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
IEnumerable<CloudTable> tableList = tableClient.ListTables("*");//returns empty list
IEnumerable<CloudTable> tableList = tableClient.ListTables();//returns empty list

4 个答案:

答案 0 :(得分:2)

此代码是否适合您?您可能希望暂时对连接字符串进行硬编码。

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.WindowsAzure.StorageClient;
using Microsoft.WindowsAzure;
namespace ConsoleClient
{
    class Program
    {
        static void Main(string[] args)
        {

            string connectionString = "DefaultEndpointsProtocol=https;AccountName=MyAccountName;AccountKey=MyAccountKey===";
            var TablesName = GetTablesNameForAzureSubscription(connectionString);
            foreach (var r in TablesName)
            {
                Console.WriteLine(r.ToString());
            } 
            Console.ReadKey(true);
        }
        private static List<string> GetTablesNameForAzureSubscription(string connectionString)
        {            
            CloudStorageAccount account =CloudStorageAccount
                                         .Parse(connectionString);
            CloudTableClient tableClient = new CloudTableClient 
                                       (account.TableEndpoint.ToString(),
                                       account.Credentials);
            var result = tableClient.ListTables();
            return result.ToList(); 
        } 

答案 1 :(得分:2)

显示Azure存储帐户中所有表的代码:

public static void list_table()
{
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("xxxxxxxxxxxxxxxxxxxxxx_AzureStorageConnectionString"));
    CloudTableClient tableClient = new CloudTableClient(storageAccount.TableEndpoint, storageAccount.Credentials);
    var result = tableClient.ListTables();          
    if(result != null)
    {
        foreach (var item in result)
        {
            Console.WriteLine(item.Name);
        } 
    }
}

输出将是:

.....THE OUTPUT FOR THE ABOVE CODE IS.....

答案 2 :(得分:0)

事实证明我的代码确实有效。客户告诉我有桌子,但显然他们错了。

注意:使用“*”作为前缀不会产生结果,但不传递任何参数将给出表格列表。

答案 3 :(得分:-1)

<强>代码:

public static void list_queue()
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("xxxxxxxxxxxxxxxxxxxxxx_AzureStorageConnectionString"));
            CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

            var result = queueClient.ListQueues();
            if (result != null)
            {
                foreach (var item in result)
                {
                    Console.WriteLine(item.Name);
                }
            }
        }

<强>输出:

enter image description here