libpq-fe, не могу выбрать INT8 - PullRequest
0 голосов
/ 13 апреля 2011

Я программирую на C, там я использую библиотеку libpq-dev / libpq-fe .С этой библиотекой я подключаюсь к локальной базе данных postgresql.

Я написал тест-код, который выбирает / вставляет что-то.Но у меня всегда была одна проблема: я могу выбрать только INT4 (4 Byte Int) числовые значения или строки.Может быть, другие, я не пробовал каждый тип.Но я не могу выбрать значения INT8 (8 байт Int).

Примеры:

"SELECT COUNT(*)::INT8 FROM tb_Test;"

Это дает мне INT8 в качестве результата.Я не знаю, как я могу получить это?Я пробовал это:

long count = ntohl(*(uint64_t*)PQgetvalue(result, 0, 0));

Счетчик всегда равен 0. Но если я выполняю этот выбор, который содержит явное приведение типа, он работает:

"SELECT COUNT(*)::INT4 FROM tb_Test;"

Я использую этот код дляполучить счет:

long count = ntohl(*(uint32_t*)PQgetvalue(result, 0, 0));

Кто-нибудь знает в чем проблема?Если вам это нравится, я публикую больше кода, пожалуйста, скажите это.Я только отправил это, потому что я думаю, что это единственная важная часть.

Спасибо

1 Ответ

1 голос
/ 14 апреля 2011

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

...