Ответа Не последовало.
Недавно мне пришлось поработать над чем-то, что требовало от меня запроса к базе данных, открытия результатов в DataReader и проверки существования определенного столбца. Хотя в DataReader нет метода для этого, всего за несколько шагов я смог выполнить эту задачу. Вот как это делается.Во-первых, в DataReader есть метод с именем GetSchemaTable() , который возвращает DataTable, содержащий информацию о данных, содержащихся в DataReader.Первый столбец в этой таблице данных называется ColumnName, а его значение (очевидно) является именем столбца.Зная это, мы можем перебирать строки в таблице данных, проверяя столбец ColumnName на наличие значения, равного имени столбца, который мы ищем.С этой целью я написал статический метод в одном из своих классов, который принимает DataReader и имя искомого столбца: недавно мне пришлось поработать над чем-то, что требовало от меня запроса к базе данных, открытия результатов в DataReader и проверки существования определенного столбца. Хотя у DataReader нет способа сделать это, всего за несколько шагов я смог выполнить эту задачу. Вот как. Как мне проверить, существует ли столбец в объекте SqlDataReader? На моем уровне доступа к данным я создал метод, который создает один и тот же объект для нескольких вызовов хранимых процедур.В одной из хранимых процедур есть дополнительный столбец, который не используется другими хранимыми процедурами. Я хочу изменить метод, чтобы он соответствовал каждому сценарию. Мое приложение написано на C#.используйте r.GetSchemaTable().Столбцы.Содержит(поле) в записи данных работает, но возвращает столбцы BS (см. скриншот ниже). Чтобы узнать, существует ли столбец данных И содержит ли он данные в DataReader, используйте следующие расширения: Таблица данных содержит по одной строке для каждого столбца результирующего набора. Каждый столбец строки таблицы схемы соответствует свойству столбца, возвращаемого в результирующем наборе, где ColumnName - это имя свойства, а значение столбца - это значение свойства.Следующий пример кода записывает информацию о схеме для DataReader.C#. VB. Тем не менее, для повышения производительности DataReader предоставляет ряд методов, которые позволяют вам получать доступ к значениям столбцов в их собственных типах данных (GetDateTime, getDouble, GetGuid, GetInt32 и так далее). Список типизированных методов доступа для DataReaders, зависящих от поставщика данных, приведен в разделах OleDbDataReader и SqlDataReader. 4. К сожалению, столбцы в этом контексте являются столбцами метаданных о IDataReader, а не списком столбцов IDataReader. Каждая строка в GetSchemaTable() DataTable является столбцом в datareader.в 1 экземпляре у одного средства чтения данных есть поле, которого нет у других. Я действительно не хочу переписывать все запросы, которые используют этот метод, чтобы включить какую-либо форму этого поля, если в этом нет необходимости. В этой статье показано, как использовать метод GetSchemaTable объекта DataReader в ADO.NET для получения информации о схеме столбца. Другое название схемы столбца - это его свойства поля.Информация о схеме столбца содержит следующую информацию о столбце: Метод GetSchemaTable возвращает свойство DataTable, которое содержит схему столбца для средства чтения данных. DataTable содержит по одной строке для каждого поля в результирующем наборе. Каждый столбец сопоставляется со свойством поля в результирующем наборе.Информация о схеме olumn содержит следующую информацию о столбце: Метод GetSchemaTable возвращает свойство DataTable, которое содержит схему столбца для DataReader. Таблица данных содержит по одной строке для каждого поля в результирующем наборе. Каждый столбец соответствует свойству поля в результирующем наборе. резюме. В этой статье показано, как использовать метод GetSchemaTable объекта DataReader в ADO.NET для получения информации о схеме столбца. Другое название схемы столбца - это его свойства поля. Информация о схеме столбца содержит следующую информацию о столбце: Метод GetSchemaTable возвращает свойство DataTable, которое содержит схему столбца для DataReader. DataTable содержит по одной строке для каждого поля в результирующем наборе. Каждый столбец сопоставляется со свойством поля в результирующем наборе.Информация о схеме olumn содержит следующую информацию о столбце: Метод GetSchemaTable возвращает свойство DataTable, которое содержит схему столбца для DataReader. Таблица данных содержит по одной строке для каждого поля в результирующем наборе. Каждый столбец соответствует свойству поля в результирующем наборе. Создавайте правильные объекты. Используя r.GetSchemaTable().Столбцы.Содержит(поле) в записи данных, но возвращает столбцы BS (см. скриншот ниже). Чтобы узнать, существует ли столбец данных И содержит ли он данные в DataReader, используйте следующие расширения: Использование:Вызов r.GetSchemaTable().Столбцы в DataReader возвращают столбцы BS: вызовите r.GetSchemaTable().Столбцы.Содержит(поле) в записи данных работает, но возвращает столбцы BS (см. скриншот ниже). Чтобы узнать, существует ли столбец данных И содержит ли он данные в DataReader, используйте следующие расширения: Используя функцию r.GetSchemaTable().Столбцы.Содержит(поле) в записи данных, но возвращает столбцы BS (см. скриншот ниже). Чтобы узнать, существует ли столбец данных И содержит ли он данные в DataReader, используйте следующие расширения:Использование: Вызов r.GetSchemaTable().Столбцы в DataReader возвращают столбцы BS: вызовите r.GetSchemaTable().Столбцы.Содержит(поле) в записи данных работает, но возвращает столбцы BS (см. скриншот ниже). Чтобы узнать, существует ли столбец данных И содержит ли он данные в DataReader, используйте следующие расширения: По сути, у меня есть метод, который использует объект на основе IDataReader и создает строго типизированный список записей. В 1 примере у одного средства чтения данных есть поле, которого нет у других. На самом деле я не хочу переписывать все запросы, которые используют этот метод, чтобы включить в них какую-либо форму этого поля, если в этом нет необходимости.в 1 примере у одного средства чтения данных есть поле, которого нет у других. Я действительно не хочу переписывать все запросы, которые используют этот метод, чтобы включить какую-либо форму этого поля, если в этом нет необходимости. Однако для повышения производительности DataReader предоставляет ряд методов, которые позволяют вам получать доступ к значениям столбцов в их собственных типах данных (GetDateTime, getDouble, GetGuid, GetInt32 и так далее). Список типизированных методов доступа для DataReaders, зависящих от поставщика данных, смотрите в OleDbDataReader и SqlDataReader.Однако для повышения производительности DataReader предоставляет ряд методов, которые позволяют получать доступ к значениям столбцов в их собственных типах данных (GetDateTime, getDouble, GetGuid, GetInt32 и так далее). Список типизированных методов доступа для DataReaders, зависящих от поставщика данных, приведен в разделах OleDbDataReader и SqlDataReader.
http://mylifeandcode.blogspot.com/2007/12/how-to-determine-if-column-exists-in.html http://stackoverflow.com/questions/373230/check-for-column-name-in-a-sqldatareader-object https://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.110).aspx http://stackoverflow.com/questions/1206596/checking-to-see-if-a-column-exists-in-a-data-reader https://support.microsoft.com/en-us/kb/310107 https://support.microsoft.com/en-us/kb/310107 http://stackoverflow.com/questions/373230/check-for-column-name-in-a-sqldatareader-object http://stackoverflow.com/questions/373230/check-for-column-name-in-a-sqldatareader-object http://stackoverflow.com/questions/1206596/checking-to-see-if-a-column-exists-in-a-data-reader https://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.110).aspx
как проверить наличие столбца в datareader c#