Я программирую на 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));
Кто-нибудь знает в чем проблема?Если вам это нравится, я публикую больше кода, пожалуйста, скажите это.Я только отправил это, потому что я думаю, что это единственная важная часть.
Спасибо