Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тип ListBox, В каком типе нужно хранить данные ListBo 
V
    Опции темы
Чердак
  Дата 28.10.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 8.12.2004

Репутация: нет
Всего: нет



Доброе время суток.
Вопрос возник почему, создаю сервис, который выполняет вот что:
Код

 public string GetValuesField(string TableName, string FieldName)
        {
            string SelectString = @"
            SELECT  "+FieldName+
            " FROM    " + TableName+ " GROUP BY "+FieldName;
            SqlConnection connection = new SqlConnection(
               ConnectionString);
            SqlCommand command = new SqlCommand(
            SelectString, connection);
            connection.Open();
            System.Text.StringBuilder results = new System.Text.StringBuilder();
            try
            {
               SqlDataReader reader = command.ExecuteReader();
               while (reader.Read())
               {
                   for (int i=0; i < reader.FieldCount; i++)
                       results.Append(reader[i].ToString());
                   results.Append(Environment.NewLine);
               }
               reader.Close();
         
            }
            catch (Exception e)
            {
                AboutError = e.Message;
                
            }

            return results.ToString();
        }


Возвращает значения столбца в виде строки. Назначить выходным параметром SqlDataReader - не удается, ругается. А какой можно использовать в данном случае выходной тип, чтобы это была не строка и массив строк, типа листбокса, как организовать заполнение? И считывание на клиенте.

--------------------
PM MAIL   Вверх
Ockonal
Дата 28.10.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Во-первых, ваша ф-ция сделана, чтобы возвращать строку:
public string GetValuesField(string TableName, string FieldName)
Во-вторых, что естественно, вы возвращаете строку smile
Что вам мешает в ф-ции загнать все куда надо и возвратить что надо?
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Чердак
Дата 28.10.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 8.12.2004

Репутация: нет
Всего: нет



В том то и дело что сейчас я возвращаю строку, которая содержит несколько значений, считанных из DataReader. Но для работы мне удобнее не строку возвращать а массив строк - типа ListBox. Т.е. считывать от сюда:
Код

SqlDataReader reader = command.ExecuteReader();
 

и заносить список значений не в одну строку, а в листбокс. Только я не знаю, что за тип мне использовать и как с ним работать.
--------------------
PM MAIL   Вверх
Partizan
Дата 28.10.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



если нужен массив строк, очевидно надо использовать string[]


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Чердак
Дата 28.10.2008, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 8.12.2004

Репутация: нет
Всего: нет



string[] - не очень удобен, приходится задавать размер массива, а он мне не извечтен сразу, приходится два раза вызывать одну и туже операцию, вот смотрите:
Код

  public string[] GetValuesField(string TableName, string FieldName)
        {
            string SelectString = @"
            SELECT  "+FieldName+
            " FROM    " + TableName+ " GROUP BY "+FieldName;
            SqlConnection connection = new SqlConnection(
               ConnectionString);
            SqlCommand command = new SqlCommand(
            SelectString, connection);
            connection.Open();
            string[] results = new string[0];
            int k = 0;
            int j = 0;
            try
            {
               SqlDataReader reader = command.ExecuteReader();
               while (reader.Read())
               {
                  k++;
               }
               reader.Close();
               results = new string[k];
               reader = command.ExecuteReader();
               while (reader.Read())
               {
                   for (int i=0; i < reader.FieldCount; i++)
                       results[j]=reader[i].ToString();
                  j++;
               }
               reader.Close();
         
            }
            catch (Exception e)
            {
                AboutError = e.Message;
                
            }
            return results;
        }

      



Это сообщение отредактировал(а) Чердак - 28.10.2008, 23:12
--------------------
PM MAIL   Вверх
Partizan
Дата 28.10.2008, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Чердак, тогда при заполнении используйте List<string>, а возвращайте то, что вернёт метод ToArray() этого списка.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Чердак
Дата 28.10.2008, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 8.12.2004

Репутация: нет
Всего: нет



Partizan, если несложно напиши небольшой пример использования этого List.
--------------------
PM MAIL   Вверх
Partizan
Дата 29.10.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Код

 public string[] GetValuesField(string TableName, string FieldName)
        {
            string SelectString = @"
            SELECT  "+FieldName+
            " FROM    " + TableName+ " GROUP BY "+FieldName;
            SqlConnection connection = new SqlConnection(
               ConnectionString);
            SqlCommand command = new SqlCommand(
            SelectString, connection);
            connection.Open();
            List<string> results = new List<string>();
            int k = 0;
            int j = 0;
            try
            {
               SqlDataReader reader = command.ExecuteReader();
               while (reader.Read())
               {
                   for (int i=0; i < reader.FieldCount; i++)
                       results.Add(reader[i].ToString());
               }
               reader.Close();
         
            }
            catch (Exception e)
            {
                AboutError = e.Message;
                
            }
            return results.ToArray();
        }



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.