PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Konwersja typu. Co mam zrobić z wartością PostgreSQL OID w libpq w C?

Znalazłem odpowiedź po zadaniu tego. Zasadniczo istnieje plik o nazwie katalog/pg_type.h, obok libpq-fe.hi postgres.h. Musisz uwzględnić po dodaniu libpq-fe.h i postgres.h, wtedy możesz uzyskać dostęp do definicji, takich jak TEXTOID , BOOLOID , INT4OID itp.

#include <stdio.h>
#include <postgres.h>
#include <libpq-fe.h>
#include <catalog/pg_type.h>

// ... snip ...

if (PQgetisnull(result, row, col)) {
  // value is NULL, nothing more to do
} else {
  char * value  = PQgetvalue(result, row, col);
  int    length = PQgetlength(result, row, col);

  switch (PQftype(result, col)) {
    case INT2OID:
    case INT4OID:
    case INT8OID:
      // process value as an integer
      break;

    default:
      // just default to a text representation
  }
}

Musisz spojrzeć na wszystkie OIDy w pg_type.h, aby mieć obszerną listę, lub po prostu przetestować, co otrzymujesz, wykonując podstawowe SELECT 't'::boolean wpisz zapytania itp. i zbuduj przełącznik tylko wtedy, gdy potrzebujesz obsługi nowego typu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skalowanie PostgreSQL dla dużych ilości danych

  2. Błąd podczas łączenia się z postgresql przy użyciu sqlalchemy

  3. [Wideo] Moc indeksowania w PostgreSQL

  4. Jak dodać automatycznie zwiększający się klucz podstawowy do istniejącej tabeli w PostgreSQL?

  5. Laravel:Błąd [PDOException]:Nie można znaleźć sterownika w PostgreSQL