GetFieldType
Метод предоставляет тип данных указанного поля текущей строки выборки данных в формате .NET (например, тип данных INTEGER СУБД ЛИНТЕР будет представлен как System.Int32).
Синтаксис
public abstract Type GetFieldType(int ordinal);
ordinal
– порядковый номер поля в текущей строке выборки данных (отсчет начинается с 0
).
Возвращаемое значение
Значение типа System.Type указанного поля текущей строки выборки данных.
Соответствие типов данных СУБД ЛИНТЕР и .NET:
СУБД ЛИНТЕР | Аналог в .NET | |
---|---|---|
INTEGER | System.Int32 | |
SMALLINT | System.Int16 | |
BIGINT | System.Int64 | |
BYTE | System.Byte[] | |
VARBYTE | System.Byte[] | |
REAL | System.Single | |
DOUBLE | System.Double | |
BOOLEAN | System.Boolean | |
CHAR | System.String | |
VARCHAR | System.String | |
NCHAR | System.String | |
NVARCHAR | System.String | |
DECIMAL | System.Decimal | |
BLOB | System.Byte[] | |
FLOAT | System.Single или System.Double в зависимости от точности FLOAT (< точность >) | |
DATE | System.DateTime | |
EXTFILE | System.String |
Исключения
IndexOutOfRangeException | Задан порядковый номер несуществующего столбца. |
Пример
// C# using System; using System.Data; using System.Data.Common; class GetFieldType { static void Main() { // Создание фабрики классов провайдера DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.LinterClient"); // Соединение с БД DbConnection con = factory.CreateConnection(); con.ConnectionString = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8"; con.Open(); // Создание объекта DbCommand DbCommand cmd = factory.CreateCommand(); cmd.Connection = con; // Формирование текста SQL-запроса cmd.CommandText = "Select sysdate, 45.67"; // Выполнение SQL-запроса DbDataReader reader = cmd.ExecuteReader(); // Обработка результатов запроса Type dataType0 = reader.GetFieldType(0); Type dataType1 = reader.GetFieldType(1); Console.WriteLine(dataType0); Console.WriteLine(dataType1); // Освобождение ресурсов reader.Dispose(); cmd.Dispose(); con.Dispose(); } } Результат выполнения примера: System.DateTime System.Decimal