Я пытаюсь разрешить пользователю выбирать таблицу из двух столбцов из этой таблицы для использования в запросе.Зачем DATA_TYPE для схемы столбцов быть отрицательным в ODBC?
Они определяют поставщик и строку подключения для выбора базы данных. Это делается с использованием DBProviderFactory и DBConnectionStringBuilder. Проблема заключается в том, что при использовании поставщика ODBC другие поставщики (OLEDB, Sql) выглядят нормально.
Я запрашиваю схему, чтобы получить таблицы. Затем пользователь выбирает таблицу. Поскольку я только хочу, чтобы пользователь мог выбрать один столбец строки и один числовой столбец, я пытаюсь ограничить столбцы, отображаемые для выбранной таблицы, в зависимости от их определенного типа в схеме. Для этого я запрашиваю коллекцию DataTypes и использую столбец ProviderDbType (который содержит число) и столбец DataType (который содержит тип системы .Net) для построения карты типов DbType для систем.
Затем я запрашиваю схему для выбранной пользователем таблицы и на основании столбца DATA_TYPE в результате просматривает тип системы, поэтому теперь я могу позволить пользователю выбрать 1 столбец, который является строкой, а другой, который является числовым. Моя проблема заключается в том, что для большинства типов баз данных это работает, но для nchar ProviderDbType указан как 11 (в запросе схемы DataTypes), но когда я получаю столбцы таблицы, DATA_TYPE -8 (который не является числом в Столбец ProviderDbType).
Как я могу правильно определить тип столбца? Или я делаю что-то неправильно?