2017-10-21 23 views
0

私は単純なC#アプリケーション(Azure SQLデータベースを使用しています)で作業しています。最初に私のアプリは名前を保存し、次にすべての人を表示することで、データベースからすべての保存された名前を取得するはずです。何らかの理由で私のコードがデータベースから名前を取得できないので、すべての人を表示すると反応しません。それを修正する手助けができますか?私の残りのコントローラクラスから(C#)Azure SQLデータベースからデータを取得する際の問題


public List<Person> getPersons() 
     { 
      List<Person> persons = new List<Person>(); 
      String sql = "SELECT * from users"; 

      try 
      { 
       SqlCommand command = new SqlCommand(sql, connection); 
       SqlDataReader reader = command.ExecuteReader(); 

       while (reader.Read()) 
       { 
        persons.Add(new Person(reader.GetInt32(0), reader.GetString(1))); 
       } 
      } 

      catch(Exception e) 
      { 
       System.Diagnostics.Debug.WriteLine("Error in getPersons(): " + e.Message); 
      } 

      return persons; 
     } 
+1

すべての人を表示するコードをデバッグしましたか?何かエラーがありますか? 'getPersons'メソッドのコードがうまく動作するかどうか確認しましたか? –

答えて

-1

まず名前が実際にデータベースに保存されて得ていることを確認してください。

コントローラが例外をスローせずに正常に実行されているかどうかを2番目に確認します。 try catchで、例外をログに記録しても空の人物リストを返します。だからあなたはクライアント側のエラーが何であるか分からないでしょう。

第3に、AzureサービスがAzure SQLインスタンスにアクセスできるようにすることです。これは、Azureポータルで行うことができます。

これが役に立ちます。

1

ローカルのAzure sqlへの接続をテストする場合、ローカルIPアドレスにAzure sqlにアクセスできるように、クライアントIPをAzure sql Firewallに追加する必要があります。

enter image description here

接続が開いていない場合、我々はに必要AzureのSQLデータベースからデータを取得する前に、接続を開きます。ブレークポイントを設定して、より詳細なエラー情報を取得することもできます。

try 
    { 
     if (connection.State != ConnectionState.Open) 

     { 
      connection.Open(); 
     } 
     SqlCommand command = new SqlCommand(sql, connection); 
     SqlDataReader reader = command.ExecuteReader(); 

     while (reader.Read()) 
     { 
     persons.Add(new Person(reader.GetInt32(0), reader.GetString(1))); 
     } 
    } 

catch(Exception e) 
{ 
     System.Diagnostics.Debug.WriteLine("Error in getPersons(): " + e.Message); 
} 

    return persons;