2014-01-30 2 views
2

Я делаю оператор select sql на моей веб-службе в Visual Studio 2010. Это только из столбца, но есть несколько строк данных. Как заполнить данные массива и вернуть его?Как заполнить ArrayList с помощью SQL Select Statement Results

[WebMethod] 
     public List<String> getAccType(string bankId) 
     { 

      myConnection.Open(); 
      SqlDataReader myReader = null; 
      SqlCommand myCommand = new SqlCommand("SELECT TypeName FROM AccType where BankID = '" + bankId + "'", myConnection); 
      myReader = myCommand.ExecuteReader(); 
      List<String> AccType = new List<string>(); 
      while (myReader.Read()) 
      { 
       string iAccType = myReader["TypeName"].ToString(); 
       AccType.Add(iAccType); 

      } 
      return AccType; 

     } 
    } 
+0

Как вы получаете данные, используя что? Может быть, чистый ado.net или какой-нибудь орм? Вот как вы работаете с ArrayList: http://msdn.microsoft.com/en-us/library/system.collections.arraylist(v=vs.110).aspx –

+0

Вернуть список массивов откуда? –

+0

Я бы не использовал ArrayList и вместо этого использовал строго типизированный «Список », содержащий данные. Тем более, что все данные поступают из одного столбца, это должно быть предпочтительным. – tvanfosson

ответ

1

В то время как вы могли бы вернуть ArrayList, было бы лучше, чтобы вернуть сильно типизированные коллекции, либо List<T> или IEnumerable<T> с лежащей в основе List<T> коллекции, возможно.

Ниже приведен пример использования SqlDataReader для извлечения данных из столбца и заполнения такого списка. Примечание. Я не включил обработку ошибок.

public IEnumerable<int> GetOrderIds() 
{ 
    var ids = new List<int>(); 
    var queryString = "SELECT OrderID FROM dbo.Orders;"; 

    using (var connection = new SqlConnection(connectionString)) 
    using (var command = new SqlCommand(queryString, connection)) 
    { 
     connection.Open(); 

     using (var reader = command.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       var id = reader.GetInt32(0); 
       ids.Add(id); 
      } 
     } 
    } 

    return ids; 
}