PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да накарам изброяванията на Java и Postgres да работят заедно за актуализиране?

От гледна точка на JDBC, просто третирайте изброяването на PostgreSQL като низ.

Цитиране на блог Преобразуване между изброяванията на Java и изброяванията на PostgreSQL:

PostgreSQL ви позволява да създавате типове enum, като използвате следния синтаксис:

CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');

Вече можете да използвате „животно“ като тип данни във вашите таблици, например:

create table pet (                         
    pet_id        integer         not null,
    pet_type      animal_type     not null,
    name          varchar(20)     not null
);

В Java ще имате съответен тип enum:

public enum AnimalType {
    DOG,
    CAT,
    SQUIRREL;
}

Преобразуването между изброяванията на Java и PostgreSQL е лесно. Например, за да вмъкнете или актуализирате поле за изброяване, можете да използвате синтаксиса CAST във вашия SQL PreparedStatement:

INSERT INTO pet (pet_id, pet_type, name) VALUES (?, CAST(? AS animal_type), ?);

--or

INSERT INTO pet (pet_id, pet_type, name) VALUES (?, ?::animal_type, ?);

Postgres също така ще ви позволи да вмъквате/актуализирате изброяване, само като предавате стойността му като низ.

Независимо дали се предава или не, Java страната е една и съща. Бихте задали полетата така:

stmt.setInt(1, 1);
stmt.setString(2, AnimalType.DOG.toString());
stmt.setString(3, 'Rex');

Извличането на enum от оператор SELECT изглежда така:

AnimalType.valueOf(stmt.getString("pet_type"));

Вземете под внимание, че изброяванията са чувствителни към малки и големи букви, така че всички несъответствия между вашите изброявания на Postgres и изброяванията на Java ще трябва да бъдат отчетени. Също така имайте предвид, че типът изброяване на PostgreSQL е нестандартен SQL и следователно не е преносим.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранявайте резултата от заявката в променлива, използвана в PL/pgSQL

  2. Две колони в подзаявка в клауза where

  3. Драйвер JDBC PostgreSQL с Android

  4. Как да деактивирам референтната цялост в Postgres 8.2?

  5. Как да конкатенираме колони в Postgres SELECT?