bernova Ответов: 1

Как использовать list<T> В C#


как следовать :

as Follow : 

          public List<T> GetDataReader<T>(string Command, int Cap)
             {
            SqlConnection con = this.openConnection();
            List<T> arr = new List<T>(Cap);
            object[] values = null;
            int fieldCount = 0;
            try
            {
                using (SqlCommand comm = new SqlCommand())
                {
                    comm.Connection = con;
                    comm.CommandText = Command;
                    comm.CommandType = CommandType.Text;
                    using (var reader = comm.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            values = new object[reader.FieldCount];
                            fieldCount = reader.GetValues(values);
                            for (int i = 0; i < fieldCount; i++)
                            {
                              
                                if(values[i] != System.DBNull.Value)
                                arr.Add((T)values[i]);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return arr;
        }


when Call the Method as below : 

      List<string>() = MyClass.GetDataReader<string>("select * from dbo.Users", 50);

i faced Syntax Error??!!


Что я уже пробовал:

Я изменил вызываемый метод на любой типизированный , но столкнулся с ошибкой

F-ES Sitecore

Когда вы получаете ошибку, всегда говорите, что это за ошибка и на какой линии она находится.

[no name]

Прежде всего, при вызове функции GetDtaReader<t> вы не должны передавать sql-команды.Он должен быть параметризован.Существует еще один способ с отражением, где вы можете конвертировать считыватели данных в список или ienumerable объекты.

1 Ответов

Рейтинг:
8

OriginalGriff

Ваша синтаксическая ошибка очевидна:

List<string>() = MyClass...
Вам нужно назвать переменную и избавиться от скобок:
List<string> myList = MyClass...

Но... как предположил дебасиш, передача SQL - команды в виде текста очень опасна: она подвергает вас SQL-инъекции, если вы не будете очень, очень осторожны-и это может удалить вашу базу данных!