Opis
Liczba zmiennoprzecinkowa 8 bajtów (64 bity)
Składnia
DOUBLE
albo
DOUBLE PRECISION
Odpowiadający typ Java
java.lang.Double
Odpowiadający typ JDBC
java.sql.Types.DOUBLE

Zakres
typ min max
standardowa java.lang.Double.MIN_VALUE = -1.7976931348623157E308 java.lang.Double.MAX.VALUE = +1.7976931348623157E308
normalizowana -2.2250738585072014E-308 +2.2250738585072014E308
denormalizowana -4.9E-324 +4.9E-324

‘Exxx’ oznacza ‘*10xxx’
Ograniczenia
Jeśli wstawiana wartość przekracza granice typu – wyrzucany jest wyjątek.
-0.0 jest normalizowane do 0.0
Maksymalna liczba znaków w zapisanej liczbie to 30 znaków.

Klasa R043
package aderby.sqls;

import aderby.DerbyUtil;

import java.sql.*;

public class R043 {
    private static final String baza = "C:/Przyklady/r043";
    private static final String createTable = "CREATE TABLE masy(\n" +
            "            id INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY(\n" +
            "                START WITH 1, INCREMENT BY 1),\n" +
            "            nazwa VARCHAR(50),    \n" +
            "            masa DOUBLE\n" +
            ")";
    private static final String createIndex1 = "CREATE INDEX i_nazwa ON masy (nazwa ASC)";
    private static final String createIndex2 = "CREATE INDEX i_masa ON masy (masa ASC)";
    private static final String a1 = "INSERT INTO masy VALUES (DEFAULT, 'Elektron', 9.11E-31)";
    private static final String a2 = "INSERT INTO masy VALUES (DEFAULT, 'Proton', 1.67E-27)";
    private static final String a3 = "INSERT INTO masy VALUES (DEFAULT, 'Atom wodoru', 1.67E-27)";
    private static final String a4 = "INSERT INTO masy VALUES (DEFAULT, 'Cząsteczka wody', 2.99E-26)";
    private static final String a5 = "INSERT INTO masy VALUES (DEFAULT, 'Cząsteczka tRNA', 4E-23)";
    private static final String a6 = "INSERT INTO masy VALUES (DEFAULT, 'Komar', 1E-6)";
    private static final String a7 = "INSERT INTO masy VALUES (DEFAULT, 'Kropla wody', 4E-5)";
    private static final String a8 = "INSERT INTO masy VALUES (DEFAULT, 'Ziarno maku', 5E-7)";

    public static void main(String[] args) {
        DerbyUtil.startDerbyEngine(DerbyUtil.embdriver);
        //Utworzenie bazy
        Connection con = DerbyUtil.connectEmbeddedDB(baza, ";create=true");
        //wstawienie danych
        Statement stat = null;
        try {
            stat = con.createStatement();
            stat.addBatch(createTable);
            stat.addBatch(createIndex1);
            stat.addBatch(createIndex2);
            stat.addBatch(a1);
            stat.addBatch(a2);
            stat.addBatch(a3);
            stat.addBatch(a4);
            stat.addBatch(a5);
            stat.addBatch(a6);
            stat.addBatch(a7);
            stat.addBatch(a8);
            stat.executeBatch();
        } catch (SQLException e1) {
            e1.printStackTrace();
        }

        //pobranie danych
        ResultSet rs = null;
        try {
            stat = con.createStatement();
            rs = stat.executeQuery("SELECT * FROM masy ORDER BY nazwa");
            while (rs.next()) {
                System.out.println(
                        rs.getString("nazwa") + " " + rs.getDouble("masa"));
            }
        } 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:

Atom wodoru 1.67E-27
Cząsteczka tRNA 4.0E-23
Cząsteczka wody 2.99E-26
Elektron 9.11E-31
Komar 1.0E-6
Kropla wody 4.0E-5
Proton 1.67E-27
Ziarno maku 5.0E-7

Pliki do ściągnięcia

Skrypt R043.zip
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.

Dodaj komentarz

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