Я хочу позволить пользователю определить запрос, который будет использоваться для получения некоторой информации. База данных, к которой подключается пользователь, также определяется пользователем. В основном, шаги, которые пользователь должен выполнить:
1 / Выберите провайдера данных (это один из провайдеров, возвращаемых DbProviderFactories.GetFactoryClasses ())
2 / Сконфигурируйте выбранного провайдера, заполнив сетку свойств, которая привязана к DbConnectionStringBuilder, возвращенному выбранным DbProviderFactory.
3 / Выберите таблицу, с которой будет работать запрос. Список таблиц происходит из DbConnection.GetSchema («Таблицы») (с DbConnection, исходящим из выбранного DbProviderFactory)
4 / Выберите столбцы (необходимо 2 столбца), которые содержат данные, необходимые для запроса. Один из этих столбцов должен быть либо текстом, либо целым числом, а другой - числовым.
Мне удалось успешно выполнить первые 3 шага, но я столкнулся с проблемой на шаге 4. Первоначально я был подключен к базе данных сервера SQL и получил все работает. Теперь, когда я попробовал его с базой данных oracle XE, у меня возникла проблема.
Использование базы данных SQLServer2005, когда я запрашиваю DATA_TYPES из схемы, я получаю такую информацию, как:
Type name ProviderDbType DataType
nchar 10 System.String
int 8 System.Int32
и когда я запрашиваю схему для столбцов в моей таблице, я получаю:
Column_Name Data_Type
Id nchar
Length int
Таким образом, при попытке сопоставить тип столбца (через значение столбца Data_type) с типом системы, который я ввел для Type_name из таблицы схемы DATA_TYPES. Все было хорошо.
Затем я начал использовать oracle (через Odbc. Хотя информация DATA_TYPES, кажется, та же самая, что я получаю из запроса столбцов, отличается. То, что я получаю, это:
Column_Name Data_Type Type_Name
Id 8 VARCHAR2
Length 10 int
, поэтому моя предыдущая стратегия ввода Type_Name из таблицы схемы DATA_TYPES и поиска значения Data_Type для получения типа системы не работает, поскольку он сохраняет тип системы с помощью ключа nchar, а затем пытается найти его с ключом 8.
просматривая различные вещи, доступные в схеме, я не могу понять, как я должен знать, какой столбец в запросе столбцов соответствует какому столбцу в таблице схемы DATA_TYPES.
Извиняюсь за длинный вопрос, надеюсь, проблема ясна.