Beispielcode zum Abrufen der wichtigsten SQL-Typwerte in Java + MySQL 8.0

Überblick

Beispielcode

Dateiliste

├── build.gradle
└── src
    └── main
        └── java
            └── JdbcSample.java

build.gradle

plugins {
  id 'application'
  id 'java'
}

sourceCompatibility = JavaVersion.VERSION_14

repositories {
  mavenCentral()
}

dependencies {
  //MySQL Connector zur Laufzeit/J 8.0.Verwenden Sie 21
  runtimeOnly 'mysql:mysql-connector-java:8.0.21'
}

tasks.withType(JavaCompile) {
  //Verwenden Sie die Java 14-Vorschaufunktion
  options.compilerArgs += ['--enable-preview']
}

application {
  //Verwenden Sie die Java 14-Vorschaufunktion
  applicationDefaultJvmArgs = ['--enable-preview']
  mainClassName = 'JdbcSample'
}

JdbcSample.java

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.Types;
import java.util.Arrays;

class JdbcSample {

  public static void main(String[] args) throws Exception {

    //Stellen Sie eine Verbindung zu MySQL her
    String url = "jdbc:mysql://localhost/testdb";
    String user = "foo";
    String password = "cafebabe";
    Connection con = DriverManager.getConnection(url, user, password);
    Statement stmt = con.createStatement();

    //Tabelle erstellen
    //Definieren Sie Spalten mit verschiedenen MySQL-Datentypen
    // (Verwenden Sie die Textblockfunktion, die wie ein Hördokument geschrieben werden kann und mit der Java 14-Vorschaufunktion verwendet werden kann)
    stmt.execute("""
      create table test (
        --Zeichenfolgentyp
        my_char        CHAR(8),        --Zeichenfolge mit fester Länge(Maximale Länge 255 Zeichen)
        my_varchar     VARCHAR(1024),  --Zeichenfolge mit variabler Länge(Maximale Länge 65535 Bytes(Die angegebene Anzahl ist jedoch die Anzahl der Zeichen))
        my_tinytext    TINYTEXT,       --Zeichenfolge mit variabler Länge(Maximale Länge 255 Bytes)
        my_text        TEXT,           --Zeichenfolge mit variabler Länge(Maximale Länge 65535 Bytes)
        my_mediumtext  MEDIUMTEXT,     --Zeichenfolge mit variabler Länge(Maximale Länge 16777215 Bytes)
        my_longtext    LONGTEXT,       --Zeichenfolge mit variabler Länge(Maximale Länge 4294967295 Bytes)

        --Binärtyp
        my_bit         BIT(16),       --Bitfeldwert(Maximale Länge 64 Bit)
        my_binary      BINARY(4),     --Binär mit fester Länge(Maximale Länge 255 Bytes)
        my_varbinary   VARBINARY(4),  --Binärdatei mit variabler Länge(Maximale Länge 65535 Bytes)
        my_tinyblob    TINYBLOB,      -- Binary Large Object (Maximale Länge 255 Bytes)
        my_blob        BLOB,          -- Binary Large Object (Maximale Länge 65535 Bytes)
        my_mediumblob  MEDIUMBLOB,    -- Binary Large Object (Maximale Länge 16777215 Bytes)
        my_longblob    LONGBLOB,      -- Binary Large Object (Maximale Länge 4294967295 Bytes)

        --Boolescher Typ
        my_boolean  BOOLEAN,  --Boolescher Wert

        --Ganzzahliger Typ
        my_tinyint    TINYINT,    -- 1 byte
        my_smallint   SMALLINT,   -- 2 bytes
        my_mediumint  MEDIUMINT,  -- 3 bytes
        my_integer    INTEGER,    -- 4 bytes
        my_bigint     BIGINT,     -- 8 bytes

        --Gleitkomma-Typ
        my_float   FLOAT,   --Gleitkommazahl mit einfacher Genauigkeit float 4 Bytes
        my_double  DOUBLE,  --Gleitkommazahl mit doppelter Genauigkeit, doppelte 8 Bytes

        --Festpunkttyp
        my_numeric  NUMERIC,  --Feste Dezimalzahl
        my_decimal  DECIMAL,  --Feste Dezimalzahl

        --Zeittyp
        my_date       DATE,         --Datum
        my_time       TIME,         --Stunden, Minuten und Sekunden
        my_datetime   DATETIME(6),  --Datum+Stunden, Minuten und Sekunden+Mikrosekunden
        my_timestamp  TIMESTAMP(6)  --Datum+Stunden, Minuten und Sekunden+Mikrosekunden+Zeitzone
      ) ENGINE=InnoDB""");

    //Datensatz hinzufügen
    // (Verwenden Sie die Textblockfunktion, die wie ein Hördokument geschrieben werden kann und mit der Java 14-Vorschaufunktion verwendet werden kann)
    stmt.execute("""
      insert into test values (
        --Zeichenfolgentyp
        'Hello', -- CHAR
        'Hello', -- VARCHAR
        'Hello', -- TINYTEXT
        'Hello', -- TEXT
        'Hello', -- MEDIUMTEXT
        'Hello', -- LONGTEXT

        --Binärtyp
        b'0111111110000000',  -- BIT
        X'CAFEBABE',          -- BINARY,
        X'CAFEBABE',          -- VARBINARY,
        X'CAFEBABE',          -- TINYBLOB,
        X'CAFEBABE',          -- BLOB,
        X'CAFEBABE',          -- MEDIUMBLOB,
        X'CAFEBABE',          -- LONGBLOB,

        --Boolescher Typ
        TRUE,  -- BOOLEAN

        --Ganzzahliger Typ
        127                ,  -- TINYINT
        32767              ,  -- SMALLINT
        8388607            ,  -- MEDIUMINT
        2147483647         ,  -- INTEGER
        9223372036854775807,  -- BIGINT

        --Gleitkomma-Typ
        123.0001,  -- FLOAT
        123.0001,  -- DOUBLE

        --Festpunkttyp
        123.0001,  -- NUMERIC
        123.0001,  -- DECIMAL

        --Zeittyp
        '2001-02-03',                       -- DATE
        '04:05:06',                         -- TIME
        '9999-12-31 23:59:59.999999',       -- DATETIME
        '2038-01-19 03:14:07.999999+00:00'  -- TIMESTAMP
      )""");

    //Holen Sie sich Rekord
    ResultSet rs = stmt.executeQuery("select * from test");
    while (rs.next()) {

      //Ruft den Typ eines Java-Objekts für den JDBC- oder SQL-Typ einer Spalte ab
      System.out.println("Spaltenname-JDBC-Typ-Datenbankspezifischer SQL-Typ-Java-Objekttyp");
      ResultSetMetaData rsmd = rs.getMetaData();
      for (int i = 1; i <= rsmd.getColumnCount(); i++) {
        System.out.println(
          rsmd.getColumnName(i) + " - " +
          getJdbcTypeName(rsmd.getColumnType(i)) + " - " +
          rsmd.getColumnTypeName(i) + " - " +
          rsmd.getColumnClassName(i));
      }
      System.out.println();

      //Spaltenwerte abrufen
      System.out.println("Spaltenname-Spaltenwert");

      //Zeichenfolgentyp
      System.out.println("my_char=" + rs.getString("my_char"));
      System.out.println("my_varchar=" + rs.getString("my_varchar"));
      System.out.println("my_tinytext=" + rs.getString("my_tinytext"));
      System.out.println("my_text=" + rs.getString("my_text"));
      System.out.println("my_mediumtext=" + rs.getString("my_mediumtext"));
      System.out.println("my_longtext=" + rs.getString("my_longtext"));

      //Binärtyp
      System.out.println("my_bit=" + Arrays.toString(rs.getBytes("my_bit")));
      System.out.println("my_binary=" + Arrays.toString(rs.getBytes("my_binary")));
      System.out.println("my_varbinary=" + Arrays.toString(rs.getBytes("my_varbinary")));
      System.out.println("my_tinyblob=" + Arrays.toString(rs.getBytes("my_tinyblob")));
      System.out.println("my_blob=" + Arrays.toString(rs.getBytes("my_blob")));
      System.out.println("my_mediumblob=" + Arrays.toString(rs.getBytes("my_mediumblob")));
      System.out.println("my_longblob=" + Arrays.toString(rs.getBytes("my_longblob")));

      //Boolescher Typ
      System.out.println("my_boolean=" + rs.getBoolean("my_boolean"));

      //Ganzzahliger Typ
      System.out.println("my_tinyint=" + rs.getInt("my_tinyint"));
      System.out.println("my_smallint=" + rs.getInt("my_smallint"));
      System.out.println("my_mediumint=" + rs.getInt("my_mediumint"));
      System.out.println("my_integer=" + rs.getInt("my_integer"));
      System.out.println("my_bigint=" + rs.getLong("my_bigint"));

      //Gleitkomma-Typ
      System.out.println("my_float=" + rs.getFloat("my_float"));
      System.out.println("my_double=" + rs.getDouble("my_double"));

      //Festpunkttyp
      System.out.println("my_numeric=" + rs.getBigDecimal("my_numeric"));
      System.out.println("my_decimal=" + rs.getBigDecimal("my_decimal"));

      //Zeittyp
      System.out.println("my_date=" + rs.getDate("my_date"));
      System.out.println("my_time=" + rs.getTime("my_time"));
      System.out.println("my_datetime=" + rs.getTimestamp("my_datetime"));
      System.out.println("my_timestamp=" + rs.getTimestamp("my_timestamp").toInstant());
    }

    stmt.close();
    con.close();
  }

  //Rufen Sie den Namen des JDBC-Typs ab
  private static String getJdbcTypeName(int type) throws IllegalAccessException {
    Field[] fs = Types.class.getDeclaredFields();
    for (Field f : fs) {
      if (type == f.getInt(null)) {
        return f.getName();
      }
    }
    return null;
  }
}

Ausführungsergebnis

Mit Gradles Laufaufgabe ausführen.

$ gradle run

> Task :compileJava
Hinweis:/Users/foo/bar/src/main/java/JdbcSample.Java verwendet die Vorschau-Sprachfunktion.
Hinweis:Detail ist,-Xlint:Bitte kompilieren Sie mit der Vorschau-Option neu.

> Task :run
Spaltenname-JDBC-Typ-Datenbankspezifischer SQL-Typ-Java-Objekttyp
my_char - CHAR - CHAR - java.lang.String
my_varchar - VARCHAR - VARCHAR - java.lang.String
my_tinytext - VARCHAR - TINYTEXT - java.lang.String
my_text - LONGVARCHAR - TEXT - java.lang.String
my_mediumtext - LONGVARCHAR - MEDIUMTEXT - java.lang.String
my_longtext - LONGVARCHAR - LONGTEXT - java.lang.String
my_bit - BIT - BIT - java.lang.Boolean
my_binary - BINARY - BINARY - [B
my_varbinary - VARBINARY - VARBINARY - [B
my_tinyblob - VARBINARY - TINYBLOB - [B
my_blob - LONGVARBINARY - BLOB - [B
my_mediumblob - LONGVARBINARY - MEDIUMBLOB - [B
my_longblob - LONGVARBINARY - LONGBLOB - [B
my_boolean - BIT - BIT - java.lang.Boolean
my_tinyint - TINYINT - TINYINT - java.lang.Integer
my_smallint - SMALLINT - SMALLINT - java.lang.Integer
my_mediumint - INTEGER - MEDIUMINT - java.lang.Integer
my_integer - INTEGER - INT - java.lang.Integer
my_bigint - BIGINT - BIGINT - java.lang.Long
my_float - REAL - FLOAT - java.lang.Float
my_double - DOUBLE - DOUBLE - java.lang.Double
my_numeric - DECIMAL - DECIMAL - java.math.BigDecimal
my_decimal - DECIMAL - DECIMAL - java.math.BigDecimal
my_date - DATE - DATE - java.sql.Date
my_time - TIME - TIME - java.sql.Time
my_datetime - TIMESTAMP - DATETIME - java.sql.Timestamp
my_timestamp - TIMESTAMP - TIMESTAMP - java.sql.Timestamp

Spaltenname-Spaltenwert
my_char=Hello
my_varchar=Hello
my_tinytext=Hello
my_text=Hello
my_mediumtext=Hello
my_longtext=Hello
my_bit=[127, -128]
my_binary=[-54, -2, -70, -66]
my_varbinary=[-54, -2, -70, -66]
my_tinyblob=[-54, -2, -70, -66]
my_blob=[-54, -2, -70, -66]
my_mediumblob=[-54, -2, -70, -66]
my_longblob=[-54, -2, -70, -66]
my_boolean=true
my_tinyint=127
my_smallint=32767
my_mediumint=8388607
my_integer=2147483647
my_bigint=9223372036854775807
my_float=123.0
my_double=123.0001
my_numeric=123
my_decimal=123
my_date=2001-02-03
my_time=04:05:06
my_datetime=9999-12-31 23:59:59.999999
my_timestamp=2038-01-19T03:14:07.999999Z

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed

Referenzmaterial

Recommended Posts

Beispielcode zum Abrufen der wichtigsten SQL-Typwerte in Java + MySQL 8.0
Beispielcode zum Abrufen der Werte der wichtigsten SQL-Typen in Java + Oracle Database 12c
Beispielcode zum Abrufen der wichtigsten JDBC-Typwerte in der Java + H2-Datenbank
Beispielquellcode zum Ermitteln des minimalen gemeinsamen Vielfachen mehrerer Werte in Java
Holen Sie sich das Ergebnis von POST in Java
So erhalten Sie das Datum mit Java
Beispielcode zum Aufrufen der Yahoo! Local Search API in Java
So ermitteln Sie die Länge einer Audiodatei mit Java
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Bedingte Verzweigung des Ergebnisses einer SQL-Anweisung, die nur eine in Java durchsucht
[Java] So erhalten Sie die URL der Übergangsquelle
Beispielcode zum Konvertieren von List in List <String> in Java Stream
[Java] So erhalten Sie den Maximalwert von HashMap
Quelle zum Abrufen der Umleitungsquell-URL in Java
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
Eine kurze Erklärung der fünf Arten von Java Static
Kommen Sie zu den Abkürzungen aus den fünf Beispielen für kursive Java-Listen
Dinge, die Sie beim Schreiben von Code in Java beachten sollten
So leiten Sie den letzten Tag des Monats in Java ab
Errate den Zeichencode in Java
Holen Sie sich null-sichere Map-Werte in Java
Liste der in Java 9 hinzugefügten Typen
[Java] Ordnen Sie die Daten des vergangenen Montags und Sonntags der Reihe nach an
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
Beispielcode mit JMustache, der Moustache-Vorlagen-Engine in Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
SQL zum Abrufen der Schemaliste (Oracle / MySQL / PostgreSQL / SQLServer / Cassandra)
Java-Referenz zum Verständnis in der Abbildung
Beispielcode zum Serialisieren und Deserialisieren von Java Enum-Enumerationen und JSON in Jackson
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
[Java] So erhalten Sie das aktuelle Verzeichnis
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
So ermitteln Sie die Gesamtzahl der Seiten beim Paging in Java
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
Ich möchte die IP-Adresse erhalten, wenn ich mit Java eine Verbindung zu Wi-Fi herstelle
Ab Java9 werden Klassenkonstruktoren, die primitiven Typen entsprechen, als veraltet markiert.
Ich möchte den Feldnamen des [Java] -Felds erhalten. (Alter Ton)
Die Geschichte des Schreibens von Java in Emacs
Beispiel zum Entpacken einer gz-Datei in Java
So erstellen Sie Ihre eigene Anmerkung in Java und erhalten den Wert
[Swift] So ermitteln Sie die Anzahl der Elemente in einem Array (Super Basic)
graphql-ruby: So erhalten Sie den Namen der Abfrage oder Mutation im Controller Hinweis
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
[Java] Beispiel eines Programms, das die Maximal- und Minimalwerte von einem Array abruft
Fassen Sie den Lebenszyklus von Java-Objekten zusammen, die bei der Android-Entwicklung berücksichtigt werden müssen
[Java] So erhalten Sie mithilfe von Stream auf einfache Weise die längste Zeichenfolge von ArrayList
[Rails5.2] Unterstützung für Piktogramme von MySQL 5.7 in Docker (Zeichencode in utf8mb4 ändern)
AndroidStudio Verweisen wir auf C ++ im Modul anderer Projekte (Java / Kotlin).
Code zum Löschen aller Dateien mit dem angegebenen Präfix in AWS S3 (Java)
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
Die Geschichte eines gewöhnlichen Othello in Java
Über die Idee anonymer Klassen in Java
Die Geschichte des Lernens von Java in der ersten Programmierung
Messen Sie die Größe eines Ordners mit Java
[Java] Ermittelt die Länge der Ersatzpaarzeichenfolge