Mir-knigi.info
mir-knigi.info » Книги » Компьютеры и интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Тут можно читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте mir-knigi.info (Mir knigi) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

public interface IDataAdapter

{

  MissingMappingAction MissingMappingAction { get; set; }

  MissingSchemaAction MissingSchemaAction { get; set; }

  ITableMappingCollection TableMappings { get; }

  DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType);

  int Fill(DataSet dataSet);

  IDataParameter[] GetFillParameters();

  int Update(DataSet dataSet);

}

Роль интерфейсов IDataReader и IDataRecord

Следующим основным интерфейсом является

IDataReader
, который представляет общие линии поведения, поддерживаемые отдельно взятым объектом чтения данных. После получения от поставщика данных ADO.NET объекта совместимого с
IDataReader
типа можно выполнять проход по результирующему набору в прямом направлении с поддержкой только чтения.

public interface IDataReader : IDisposable, IDataRecord

{

  // Плюс члены интерфейса IDataRecord

  int Depth { get; }

  bool IsClosed { get; }

  int RecordsAffected { get; }

  void Close();

  DataTable GetSchemaTable();

  bool NextResult();

  bool Read();

  Dispose();

}

Наконец, интерфейс

IDataReader
расширяет
IDataRecord
. В интерфейсе
IDataRecord
определено много членов, которые позволяют извлекать из потока строго типизированное значение, а не приводить к нужному типу экземпляр
System.Object
, полученный из перегруженного метода индексатора объекта чтения данных. Вот определение интерфейса
IDataRecord
:

public interface IDataRecord

{

  int FieldCount { get; }

  object this[ int i ] { get; }

  object this[ string name ] { get; }

  bool GetBoolean(int i);

  byte GetByte(int i);

  long GetBytes(int i, long fieldOffset, byte[] buffer,

    int bufferoffset, int length);

  char GetChar(int i);

  long GetChars(int i, long fieldoffset, char[] buffer,

    int bufferoffset, int length);

  IDataReader GetData(int i);

  string GetDataTypeName(int i);

  DateTime GetDateTime(int i);

  Decimal GetDecimal(int i);

  double GetDouble(int i);

  Type GetFieldType(int i);

  float GetFloat(int i);

  Guid GetGuid(int i);

  short GetInt16(int i);

  int GetInt32(int i);

  long GetInt64(int i);

  string GetName(int i);

  int GetOrdinal(string name);

  string GetString(int i);

  object GetValue(int i);

  int GetValues(object[] values);

  bool IsDBNull(int i);

}

На заметку! Метод

IDataReader.IsDBNull()
можно применять для программного выяснения, установлено ли указанное поле в
null
, прежде чем пытаться получить значение из объекта чтения данных (во избежание генерации исключения во время выполнения). Также вспомните, что язык C# поддерживает типы данных, допускающие
null
(см. главу 4), идеально подходящие для взаимодействия со столбцами, которые могут иметь значение
null
в таблице базы данных.

Абстрагирование поставщиков данных с использованием интерфейсов

К настоящему моменту вы должны лучше понимать общую функциональность, присущую всем поставщикам данных .NET Core. Вспомните, что хотя точные имена реализуемых типов будут отличаться между поставщиками данных, в коде такие типы применяются в схожей манере — в том и заключается преимущество полиморфизма на основе интерфейсов. Скажем, если определить метод, который принимает параметр

IDbConnection
, то ему можно передавать любой объект подключения ADO.NET:

public static void OpenConnection(IDbConnection cn)

{

<b>  // Открыть входное подключение для вызывающего кода.</b>

  connection.Open();

}

На заметку! Использовать интерфейсы вовсе не обязательно; аналогичного уровня абстракции можно достичь путем применения абстрактных базовых классов (таких как

DbConnection
) в качестве параметров или возвращаемых значений. Однако использование интерфейсов вместо базовых классов является общепринятой практикой.

То же самое справедливо для возвращаемых значений. Создайте новый проект консольного приложения .NET Core по имени

MyConnectionFactory
. Добавьте в проект перечисленные ниже пакеты NuGet (пакет
OleDb
действителен только в Windows):

Microsoft.Data.SqlClient

System.Data.Common

System.Data.Odbc

System.Data.OleDb

Далее добавьте в проект новый файл по имени

DataProviderEnum.cs
со следующим кодом:

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор mir-knigi.info.


Прокомментировать
Подтвердите что вы не робот:*