Результат SQL-запроса в массив - PullRequest
0 голосов
/ 02 апреля 2019

Я написал следующее в попытке выполнить SQL-запрос и сохранить результат в массиве:

public static ArrayList DbQueryToArry()
        {
            string SqlCString = myConnString;
            SqlConnection connection = null;

            ArrayList valuesList = new ArrayList();

            connection = new SqlConnection(SqlCString);
            connection.Open();

            SqlCommand command = new SqlCommand("Select CLIENTNO, ACCOUNT_Purpose from audit.ACCOUNTS_AUDIT", connection);
            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                valuesList.Add(Convert.ToInt32(reader[0].ToString()));
            }
            return valuesList;
        }

Но работает следующее

var myArray = DbQueryToArry();
Console.WriteLine(myArray.ToString()); 

Не возвращает результат запроса ..

1 Ответ

3 голосов
/ 02 апреля 2019

Вам нужно будет присоединиться к ним вручную с помощью string.Join или чего-то подобного

Объединяет элементы указанного массива или членов коллекции, используя указанный разделитель между каждым элементом или член.

Console.WriteLine(string.Join(",",myArray.ToArray())); 

Причина, по которой ваша версия не работает, заключается в том, что Console.Writeline имеет кучу перегрузок для разных типов, однако возвращается к WriteLine(Object), когда не может найти конкретное разрешение соответствует

Исходный код WriteLine(Object value) выглядит следующим образом (который можно найти здесь )

public virtual void WriteLine(Object value) {
   if (value==null) {
      WriteLine();
   }
   else {
      // Call WriteLine(value.ToString), not Write(Object), WriteLine().
      // This makes calls to WriteLine(Object) atomic.
      IFormattable f = value as IFormattable;
      if (f != null)
         WriteLine(f.ToString(null, FormatProvider));
      else
         WriteLine(value.ToString());
   }
}

Обратите внимание, как он звонит value.ToString()?

Метод Object.ToString

Возвращает строку, которая представляет текущий объект.

Примечания

Object.ToString является основным методом форматирования в .NET Framework. Он преобразует объект в его строковое представление так, чтобы он подходит для отображения.

У ArrayList нет перегрузки ToString (), которая могла бы предвидеть то, что вы хотите показать, поэтому он полагается на значение по умолчанию.

Метод Object.ToString () по умолчанию

Реализация по умолчанию метода ToString возвращает полностью квалифицированное название типа объекта

Что подводит меня к следующему пункту, не используйте ArrayList, используйте универсальный массив int[] или List<int>, вы найдете его гораздо более увлекательным и полезным ( веселый уровень 100 )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...