sql >> Database teknologi >  >> RDS >> PostgreSQL

Indsæt binært stort objekt (BLOB) i PostgreSQL ved hjælp af libpq fra fjernmaskine

Der er 2 typer klatter i PostgreSQL — BYTEA og Large Objects . Jeg vil anbefale, at du ikke bruger store objekter, da du ikke kan forbinde dem til tabeller.

For BYTEA ville du bruge noget som dette i libpq:

PGresult* put_data_to_tablename(
  PGconn* conn,
  int32_t id,
  int data_size,
  const char* const data
) {
  PGresult* result;
  const uint32_t id_big_endian = htonl((uint32_t)id);
  const char* const paramValues[] = { &id_big_endian, data };
  const int nParams = sizeof(paramValues) / sizeof(paramValues[0]);
  const int paramLenghts[] = { sizeof(id_big_endian), data_size };
  const int paramFormats[] = { 1, 1 }; /* binary */
  const int resultFormat = 0; /* text */

  result = PQexecParams(
    conn,
    "insert into tablename (id, data) values ($1::integer, $2::bytea)",
    nParams,
    NULL, /* Types of parameters, unused as casts will define types */
    paramValues,
    paramLenghts,
    paramFormats,
    resultFormat
  );
  return result;
}


  1. Få adgang til Oracle Apex fra fjernmaskine

  2. Java kontrollerer om værdien findes i databasen

  3. FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; Ønsker at konfigurere en adgangskode som root som bruger

  4. Brug af MySql mellem klausul med datoer