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