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