Opis
Łańcuch bajtów o stałej wskazanej długości od 1 do 254 bajtów. Długość domyślna to 1 bajt.
Składnia
CHAR (liczba bajtów) FOR BIT DATA
albo
CHARACTER (liczba bajtów) FOR BIT DATA
Odpowiadający typ JDBC
java.sql.Types.BINARY
Ograniczenia
Jeśli wstawiany łańcuch bajtów krótszy niż podany, to łańcuch bajtów jest automatycznie uzupełniony wartościami bajtowymi 0x20 do podanej długości.
Gdy porównywane są dwa łańcuchy bajtowe – muszą być tej samej długości.
Wyniki operacji na CHAR FOR BIT DATA i VARCHAR FOR BIT DATA są zawsze typu VARCHAR FOR BIT DATA.
Bajty wstawiamy jako liczby heksadecymalne poprzedzone prefiksem X albo x, np. X’ff’.
Do przeliczenia tablicy byte[] na liczbę heksadecymalną można użyć metody:

public static String byteArrayToHexString(byte[] bytes) {
	StringBuilder sb = new StringBuilder();
	for(byte b : bytes){
		sb.append(String.format("%02x", b));
	}
	return sb.toString();
}

Przykład w klasie R053:

        DerbyUtil.startDerbyEngine(DerbyUtil.embdriver);
        //Utworzenie bazy i wstawienie danych
        Connection con = DerbyUtil.connectEmbeddedDB(baza, 
               ";create=true");
        DerbyUtil.jdbcRunScript(skrypt, con);
        //pobranie danych
        Statement stat = null;
        ResultSet rs = null;
        byte[] bytes;
        String n;
        try {
            stat = con.createStatement();
            rs = stat.executeQuery("SELECT * FROM colors");
            while (rs.next()) {
                n = rs.getString("name");
                bytes = rs.getBytes("val");
                System.out.print(n + " ");
		 for (byte aByte : bytes) {
	//System.out.print(Integer.toHexString(bytes[i] & 0xff));
		System.out.print(String.format("%02x", aByte));
				}
                System.out.println();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        DerbyUtil.close(rs);
        DerbyUtil.close(stat);
        DerbyUtil.close(con);
        DerbyUtil.shutdownEmbeddedDB(baza);
        DerbyUtil.shutdownDerbyEngine();

Po uruchomieniu klasy na konsoli zobaczymy:

DeepPink ff1493
OrangeRed ff4500
GoldYellow ffd700
Salmon fa8072
BlueViolet 8a2be2
LimeGreen 32cd32
Olive 808000
Turquoise 40e0d0
RoyalBlue 4169e1
Maroon 800000

Pliki do ściągnięcia

Plik r053.zip (klasa + skrypt)
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 wszyskich wpisach w projekcie. W przypadku pliku module-info.java może być potrzebne skreślenie niepotrzebnych wpisów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *