Zielony Smok - logo witryny

Apache Derby: typ danych VARCHAR

Opis

Łańcuch znaków o zmiennej wskazanej długości od 1 do 32 672 znaków. 32 672 znaki to nieco ponad 18 stron znormalizowanego maszynopisu A-4

Składnia

VARCHAR(liczba znaków)

albo

CHAR VARYING(liczba znaków)

albo

CHARACTER VARYING(liczba znaków)

Odpowiadający typ Java

java.lang.String

Odpowiadający typ JDBC

java.sql.Types.VARCHAR

Ograniczenia

Jeśli wstawiany łańcuch jest krótszy niż podany, to łańcuch znaków nie jest uzupełniony spacjami do podanej długości. Jeśli jest dłuższy niż podany – nadmiarowa część znaków (jeśli są to spacje) jest obcinana.

Jeśli znakami nadmiarowymi nie są spacje – wyrzucany jest wyjątek.

Gdy porównywane są dwa łańcuchy VARCHAR spacje na końcu – jeśli są – są ignorowane.

Przy porównywaniu CHAR i VARCHAR krótsza wartość jest uzupełniana spacjami, tak aby miała taką samą długość jak dłuższa.

Stałe są typu CHAR.

Jeśli VARCHAR jest kolumną klucza w indeksie to maksymalna wielkość pola nie powinna być większa niż 1/2 wielkości strony.

Klasa R051.java
package aderby.types;

import aderby.DerbyUtil;

import java.sql.*;

public class R051_VARCHAR {
    private static final String baza = "C:/Przyklady/R051";
    private static final String skrypt = "aderby/src/resources/sqls/ziemia.sql";

    public static void main(String[] args) {
        DerbyUtil.startDerbyEngine(DerbyUtil.embdriver);
        Connection con = DerbyUtil.connectEmbeddedDB(baza, ";create=true");
        DerbyUtil.jdbcRunScript(skrypt, con);
        Statement stat = null;
        ResultSet rs = null;
        try {
            stat = con.createStatement();
            rs = stat.executeQuery("SELECT * FROM ziemia");
            while (rs.next()) {
                System.out.println(
                        rs.getString("nazwa"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        DerbyUtil.close(rs);
        DerbyUtil.close(stat);
        DerbyUtil.close(con);
        DerbyUtil.shutdownEmbeddedDB(baza);
        DerbyUtil.shutdownDerbyEngine();
    }
}
Plik ziemia.sql
CREATE TABLE ziemia(
            id INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY(
                START WITH 1, INCREMENT BY 1),
            nazwa VARCHAR(50),            
            val REAl,
            jedn VARCHAR (10)
);

CREATE INDEX i_nazwa ON ziemia (nazwa ASC);
CREATE INDEX i_val ON ziemia (val ASC);
INSERT INTO ziemia VALUES(DEFAULT, 'średni promień równikowy', 6378.137, 'km');
INSERT INTO ziemia VALUES(DEFAULT, 'średni promień biegunowy', 6356.752, 'km');
INSERT INTO ziemia VALUES(DEFAULT, 'średnie spłaszczenie biegunowe', 0.003353, '');
INSERT INTO ziemia VALUES(DEFAULT, 'mimośród elipsy tworzonej przez południki', 0.0818, '');
INSERT INTO ziemia VALUES(DEFAULT, 'promień średni dla objętości kuli', 6371.001, 'km');
INSERT INTO ziemia VALUES(DEFAULT, 'powierzchnia', 510.066, 'mld km2');
INSERT INTO ziemia VALUES(DEFAULT, 'objętość', 1083.207, 'mld km3');

Po uruchomieniu klasy na konsoli zobaczymy:

średni promień równikowy
średni promień biegunowy
średnie spłaszczenie biegunowe
mimośród elipsy tworzonej przez południki
promień średni dla objętości kuli
powierzchnia
objętość

Pliki do ściągnięcia

Aktualny (tworzony narastająco) plik module-info.java

Aktualny (tworzony narastająco) plik DerbyUtil.java

Pliki tworzone narastająco zastępują poprzednie pliki o tej samej nazwie i działają dla wszystkich wcześniej opublikowanych przykładów we wszystkich wpisach w projekcie. W przypadku pliku module-info.java może być potrzebne skreślenie niepotrzebnych wpisów.