Обновление .NET провайдера. Сборка 1042.

Привет всем.

Новая сборка нашего ADO.NET провайдер для OLEDB доступна для скачивания.

Реализованы два метода — OleDbDataReader.GetBytes и OleDbDataReader.GetChars. В обоих случаях, у OLEDB провайдера запрашиваются storage-объекты и применяется «блочное» чтение данных. Если запрашивается только размер данных (значение аргумента «buffer» равно null), то у OLEDB провайдера запрашивается количество байт/символов в колонке, что в большинстве случаев исключает чтение данных блоба. Кроме блобов, эти методы могут так же применяться и к обычным CHAR/VARCHAR колонкам.

Сама реализация (хочется надеяться) более продумана по сравнению с тем, как эти методы реализованы в стандартном OLEDB.NET и Firebird .NET провайдере. Последние (судя по коду) сначала грузят все данные, а потом либо определяют размер либо возвращают затребованный сегмент. То есть, если последовательно читать по-одному байту блоб размером N байт, то этот блоб будет N-раз целиком прочитан из базы данных. И еще есть сомнения насчет того, что эти провайдеры позволяют читать блобы размер которых больше 2GB.

Что дальше?
Естественно, останавливаться на достигнутых результатах пока не планируется. Следующими шагами, я так думаю, будут:

  • Добавление в OleDbDataReader методов GetStream, GetTextReader (по аналогии с нативным .NET провайдером для MSSQL)
  • Поддержка Stream, TextReader в качестве значений параметров

Будет интересно потом поиграть в перекачку файлов в базу и обратно 🙂

Leave a Comment