(C#)从Azure SQL数据库检索数据时出现问题

时间:2017-10-21 23:09:17

标签: c# rest azure http-headers azure-sql-database

我一直在研究一个简单的c#app(使用Azure SQL数据库)。首先我的应用程序保存一个名称,然后通过单击show all persons,它应该从数据库中检索所有已保存的名称。由于某种原因,我的代码无法从数据库中检索名称,所以当我点击显示所有人时,它没有反应,你能帮我解决这个问题吗?

来自我的其他控制器类:

 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;
        }

2 个答案:

答案 0 :(得分:1)

如果我们测试连接到本地的Azure sql,我们需要将客户端IP添加到Azure sql Firewall以允许本地访问Azure sql。

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;

答案 1 :(得分:-1)

首先确保名称实际上已保存在数据库中。

再次检查控制器是否成功执行而不抛出异常。在try catch中,您记录异常并仍然返回空人列表。所以你不会知道客户端的错误是什么。

第三是确保您已启用Azure服务来访问Azure SQL实例。这可以通过Azure门户完成。

希望这会有所帮助。