25.3.1. Чтение определенной записи

25.3.1. Чтение определенной записи

Функции dpget() и dpgetwb() производят поиск записей в базе данных по ключу.

int dpget(DEPOT * depot, const char * key, int keySize, int start,

 int max, int * dataSize);

key является элементом (ключом), с помощью которого производится поиск по базе данных, a keySize определяет длину ключа (или значение -1, при котором Depot использует функцию strlen(key) для определения длины ключа). С помощью следующих двух параметров, start и max, можно производить частичное чтение записей; параметр start задает смещение в данных, с которого начнется операция чтения, а max — максимальное количество байтов для чтения. Например, если область данных представляла бы собой массив из четырехбайтовых целочисленных значений int, то в результате присвоения параметру start значения 12 и параметру max значения 8 производилось бы чтение четвертого и пятого элементов массива. Если для чтения доступно менее start байтов, функция dpget() вернет NULL. Чтобы прочитать все байты из данных, параметру max следует присвоить значение -1.

Если последний параметр, dataSize, не будет равен NULL, то целое число, на которое он указывает, будет соответствовать количеству прочитанных байтов.

В случае сбоя эта функция возвращает NULL, а в случае успешного завершения она возвращает указатель на прочитанные данные. В случае сбоя dpcode сообщает о том, что стало причиной сбоя. В частности, если элемент не существует или имеет менее start байтов данных, dpcode будет присвоено DP_ENOITEM.

Когда функция dpget() возвращает данные, к ним добавляется байт 0, позволяя работать с ними как со строкой. Размещение указателя производится с помощью функции malloc(), и приложение отвечает за освобождение памяти после завершения своей работы. Если приложениям необходимо поместить данные в буфер, вместо того чтобы Depot размещала его с помощью функции malloc(), то они должны использовать функцию dpgetwb().

int dpgetwb(DEPOT * depot, const char * key, int keySize, int start,

int max, const char * data);

Функции dpgetwb() и dpget() отличаются друг от друга только двумя параметрами: max (который интерпретируется по-разному) и data (который заменяет параметр dataSize из функции dpgetwb()). Параметр data должен указывать на буфер из max байтов, в который функция dpgetwb() будет помещать данные, прочитанные из базы данных. В функции dpgetwb() параметр max не должен иметь значение -1, и буфер не будет иметь байт 0, автоматически добавляемый в него этой функцией. Функция dpgetwb() возвращает количество байтов, хранящихся в data, и -1, если запись не была найдена, если данных оказалось меньше start байтов или если возникла ошибка.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.4.2. Чтение файлов

Из книги Программирование на языке Пролог автора Клоксин У.

5.4.2. Чтение файлов Предикаты, которые предоставляет Пролог для переключения текущего входного потока данных, аналогичны предикатам, обсуждавшимся выше. Целевое утверждение see(X) переключает текущий входной поток данных на файл с указанным именем. Так же как и tell, это


2.2.3.3 Опережающее чтение

Из книги Руководство администратора баз данных Informix. автора Кустов Виктор

2.2.3.3 Опережающее чтение Сервер OnLine DS может быть сконфигурирован таким образом, чтобы при чтении последовательной таблицы или индексного файла обеспечивалось опережающее чтение нескольких страниц в то время, пока обрабатываются уже прочитанные в разделяемую память


Зависание после запуска определенной программы

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

Зависание после запуска определенной программы Вы запускаете какую-нибудь программу, например игру, и компьютер зависает. Важно определить, зависает ли компьютер только при запуске этой программы или при запуске этого типа программ. Понимаете разницу? Может быть ошибка


Чтение и запись

Из книги Справочник по PHP автора

Чтение и запись freadЧитает из открытого файла определенное количество символов.Синтаксис:string fread(int $f, int $numbytes)Читает из файла $f $numbytes символов и возвращает строку этих символов. После чтения указатель файла продвигается к следующему после прочитанного блока позициям. Если


25.3. Чтение записей

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

25.3. Чтение записей Прочитать записи в базе данных можно двумя способами: посредством поиска записи по ее ключу и путем чтения последовательных пар


Чтение почты

Из книги Интернет – легко и просто! автора Александров Егор

Чтение почты Прежде чем начать читать почту, ее необходимо получить. Для этого нажимаем кнопку Доставить почту на панели инструментов. После загрузки новых сообщенийна компьютер их можно обнаружить в папке Входящие. Чтобы в нее попасть, щелкаем на значке Входящие в


1.25. Указание определенной библиотеки для автоматической компоновки с исходным файлом

Из книги C++. Сборник рецептов автора Диггинс Кристофер

1.25. Указание определенной библиотеки для автоматической компоновки с исходным файлом ПроблемаВы написали библиотеку, которую хотите распространять в виде набора заголовочных файлов и готовых статических или динамических библиотек, но не хотите, чтобы пользователи


Увеличение определенной области фотографии

Из книги Удвоение продаж в интернет-магазине автора Парабеллум Андрей Алексеевич

Увеличение определенной области фотографии На рис. 33 вы видите пример работы с очень удобным инструментом для пользователей, который позволяет увеличивать определенную область фотографии. В окошке слева клиент с помощью мыши выбирает прямоугольную область для


(DZ) Давид Ян: «Я думаю, что люди, которые толкают науку и бизнес вперёд, в определённой степени безумны» Компьютерра

Из книги Цифровой журнал «Компьютерра» № 186 автора Журнал «Компьютерра»

(DZ) Давид Ян: «Я думаю, что люди, которые толкают науку и бизнес вперёд, в определённой степени безумны» Компьютерра Опубликовано 13 августа 2013 Дорогие друзья, данным материалом мы хотим открыть на «Компьютерре» серию бесед Дмитрия Завалишина


Угроза получения учетной записи администратора с помощью учетной записи опытного пользователя

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Угроза получения учетной записи администратора с помощью учетной записи опытного пользователя Как говорилось раньше, использование группы Опытные пользователи не приветствуется Microsoft, так как данная группа имеет очень многие права в системе. В этой главе хотелось бы


2. Чтение мыслей

Из книги Инфобизнес за один день автора Ушанов Азамат

2. Чтение мыслей Вспомните любой продающий текст, который вам понравился в Сети. Который сразу захватил ваше внимание, и вы почувствовали, что этот сайт для вас.Как это достигается? Необходимо с первых строк описать трудную ситуацию вашего потенциального клиента – какие


Б.1.4. Чтение данных

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк


Чтение блогов

Из книги Социальные сети без страха для тех, кому за... автора Виннер Марина


18.3. Чтение и запись

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

18.3. Чтение и запись Создав маршрутизирующий сокет, процесс может отправлять ядру команды путем записи в этот сокет и считывать из него информацию от ядра. Существует 12 различных команд маршрутизации, 5 из которых могут быть запущены процессом. Они определяются в


19.2. Чтение и запись

Из книги Разработка ядра Linux автора Лав Роберт

19.2. Чтение и запись Все сообщения в сокете управления ключами должны иметь одинаковые заголовки, соответствующие листингу 19.1[1]. Сообщение может сопровождаться различными расширениями в зависимости от наличия дополнительной информации или необходимости ее


Запрещение определенной линии прерывания

Из книги автора

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