Я использую базу данных Northwind и ODBC. Для моего приложения C# я хочу получить тип данных столбца как объект типа (не как String), потому что я хочу использовать Тип по некоторым причинам.Как получить тип данных столбца?
Пример (из Борей) - Таблица ORDERDETAILS содержит столбцы:
OrderID type int(11), ProductID type int(11), UnitPrice type float, etc.
Я хочу, чтобы получить что-то вроде:
Type dataType = (the data type of OrderID)
НЕ:string dataType = reader.GetString(dataTypeOrdinal); // I can get this without any problem.
Здесь есть фрагмент кода: (я также добавил некоторые комментарии в коде)
var connectionString = Database.ConnectionString;
var command = "SELECT COLUMN_NAME, TABLE_NAME, DATA_TYPE, IS_NULLABLE from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = \'" + _name + "\'";
IDataReader reader = null;
reader = _database.Provider.ExecuteReader(command, false);
while (reader.Read())
{
var columnNameOrdinal = reader.GetOrdinal("column_name");
var dataTypeOrdinal = reader.GetOrdinal("data_type");
var columnName = reader.GetString(columnNameOrdinal);
// till line above everything works fine
// ---------my problem starts below ---------------
// I don't need data type as string like this:
// var dataTypeName = reader.GetString(dataTypeOrdinal);
// but rather something like: Type dataType = (the data type of column)
// I tried using reader.GetData(dataTypeOrdinal), but I get
// System.NotSupportedException: "Specified method is not supported."
}
Любая помощь и советы приветствуются. Thx заранее.
Я попытался GetProviderSpecificFieldType, но получаю ошибку: \t «System. Data.IDataReader 'не содержит определения для «GetProviderSpecificFieldType» и не расширяет sion метод «GetProviderSpecificFieldType», принимающий первый аргумент типа «System.Data.IDataReader», может быть найден (вам не хватает директивы using или ссылки на сборку?) – MagB
какой тип провайдера вы используете? –
насколько я вижу, это поставщик Sql. Что бы вы предложили, чтобы GetProviderSpecificFieldType работал? – MagB