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.