Беркли DB кортеж с неизвестным типом данных - PullRequest
3 голосов
/ 25 февраля 2011

Я работаю с базой данных Беркли (на Java). Мне нужно прочитать кортеж, где последовательность представляет собой строку, int или long, а затем другую строку. Как я могу определить, содержит ли кортеж int или long? В зависимости от того, что держит кортеж, я сделаю одно из следующего:

String s1 = input.readString();
int num1 = input.readInt();
String s2= input.readString();

or

String s1 = input.readString();
long num1 = input.readLong();
String s2= input.readString();

Значение int составляет 4 байта, а длина - 8 байтов. Если кортеж содержит int и я считал его как long, я получаю недопустимое значение, поскольку он преобразует 4 байта int + 4 байта следующей строки в long.

1 Ответ

1 голос
/ 25 февраля 2011

Вы можете задать этот вопрос на форуме Berkeley DB или Berkeley DB Java Edition , в зависимости от того, какую библиотеку вы используете. Кроме того, вы можете указать, какой API вы используете: пара ключ-значение, коллекции Java или Direct Persistence Layer. Это поможет лучше понять, есть ли способ определить, как выглядит структура записи.

Например, если вы используете API пары ключ-значение, в запись не включается «кодировка» или «схема». Вызывающее приложение должно знать, как выглядит структура записи.

API Java Collections и Direct Persistence Layer действительно имеют некоторое представление о том, как выглядит запись. Вы можете найти Java Collections Tutorial полезной, а также Java-примеры , которые включены в загрузку продукта.

...