Exemple de code pour obtenir les valeurs de type SQL clés dans Java + MySQL 8.0

Aperçu

Exemple de code

Liste des fichiers

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

build.gradle

plugins {
  id 'application'
  id 'java'
}

sourceCompatibility = JavaVersion.VERSION_14

repositories {
  mavenCentral()
}

dependencies {
  //Connecteur MySQL au moment de l'exécution/J 8.0.Utiliser 21
  runtimeOnly 'mysql:mysql-connector-java:8.0.21'
}

tasks.withType(JavaCompile) {
  //Utiliser la fonction de prévisualisation de Java 14
  options.compilerArgs += ['--enable-preview']
}

application {
  //Utiliser la fonction de prévisualisation de Java 14
  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 {

    //Connectez-vous à MySQL
    String url = "jdbc:mysql://localhost/testdb";
    String user = "foo";
    String password = "cafebabe";
    Connection con = DriverManager.getConnection(url, user, password);
    Statement stmt = con.createStatement();

    //Créer une table
    //Définir des colonnes avec différents types de données MySQL
    // (Utilisez la fonction de bloc de texte qui peut être écrite comme un document d'entendre qui peut être utilisée avec la fonction d'aperçu Java 14)
    stmt.execute("""
      create table test (
        --Type de chaîne
        my_char        CHAR(8),        --Chaîne de caractères de longueur fixe(Longueur maximale de 255 caractères)
        my_varchar     VARCHAR(1024),  --Chaîne de caractères de longueur variable(Longueur maximale 65535 octets(Cependant, le nombre spécifié est le nombre de caractères))
        my_tinytext    TINYTEXT,       --Chaîne de caractères de longueur variable(Longueur maximale 255 octets)
        my_text        TEXT,           --Chaîne de caractères de longueur variable(Longueur maximale 65535 octets)
        my_mediumtext  MEDIUMTEXT,     --Chaîne de caractères de longueur variable(Longueur maximale 16777215 octets)
        my_longtext    LONGTEXT,       --Chaîne de caractères de longueur variable(Longueur maximale 4294967295 octets)

        --Type binaire
        my_bit         BIT(16),       --Valeur Bitfield(Longueur maximale 64 bits)
        my_binary      BINARY(4),     --Longueur fixe binaire(Longueur maximale 255 octets)
        my_varbinary   VARBINARY(4),  --Binaire de longueur variable(Longueur maximale 65535 octets)
        my_tinyblob    TINYBLOB,      -- Binary Large Object (Longueur maximale 255 octets)
        my_blob        BLOB,          -- Binary Large Object (Longueur maximale 65535 octets)
        my_mediumblob  MEDIUMBLOB,    -- Binary Large Object (Longueur maximale 16777215 octets)
        my_longblob    LONGBLOB,      -- Binary Large Object (Longueur maximale 4294967295 octets)

        --Type booléen
        my_boolean  BOOLEAN,  --Valeur booléenne

        --Type entier
        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

        --Type à virgule flottante
        my_float   FLOAT,   --Nombre à virgule flottante simple précision float 4 octets
        my_double  DOUBLE,  --Nombre à virgule flottante double précision double 8 octets

        --Type de point fixe
        my_numeric  NUMERIC,  --Nombre décimal fixe
        my_decimal  DECIMAL,  --Nombre décimal fixe

        --Type d'heure
        my_date       DATE,         --Date
        my_time       TIME,         --Heures, minutes et secondes
        my_datetime   DATETIME(6),  --Date+Heures, minutes et secondes+Micro secondes
        my_timestamp  TIMESTAMP(6)  --Date+Heures, minutes et secondes+Micro secondes+Fuseau horaire
      ) ENGINE=InnoDB""");

    //Ajouter un enregistrement
    // (Utilisez la fonction de bloc de texte qui peut être écrite comme un document d'entendre qui peut être utilisée avec la fonction d'aperçu Java 14)
    stmt.execute("""
      insert into test values (
        --Type de chaîne
        'Hello', -- CHAR
        'Hello', -- VARCHAR
        'Hello', -- TINYTEXT
        'Hello', -- TEXT
        'Hello', -- MEDIUMTEXT
        'Hello', -- LONGTEXT

        --Type binaire
        b'0111111110000000',  -- BIT
        X'CAFEBABE',          -- BINARY,
        X'CAFEBABE',          -- VARBINARY,
        X'CAFEBABE',          -- TINYBLOB,
        X'CAFEBABE',          -- BLOB,
        X'CAFEBABE',          -- MEDIUMBLOB,
        X'CAFEBABE',          -- LONGBLOB,

        --Type booléen
        TRUE,  -- BOOLEAN

        --Type entier
        127                ,  -- TINYINT
        32767              ,  -- SMALLINT
        8388607            ,  -- MEDIUMINT
        2147483647         ,  -- INTEGER
        9223372036854775807,  -- BIGINT

        --Type à virgule flottante
        123.0001,  -- FLOAT
        123.0001,  -- DOUBLE

        --Type de point fixe
        123.0001,  -- NUMERIC
        123.0001,  -- DECIMAL

        --Type d'heure
        '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
      )""");

    //Obtenez un enregistrement
    ResultSet rs = stmt.executeQuery("select * from test");
    while (rs.next()) {

      //Obtenir le type d'un objet Java pour le type JDBC ou SQL d'une colonne
      System.out.println("Nom de colonne-Type JDBC-Type SQL spécifique à la base de données-Type d'objet Java");
      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();

      //Obtenir les valeurs de colonne
      System.out.println("Nom de colonne-Valeur de la colonne");

      //Type de chaîne
      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"));

      //Type binaire
      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")));

      //Type booléen
      System.out.println("my_boolean=" + rs.getBoolean("my_boolean"));

      //Type entier
      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"));

      //Type à virgule flottante
      System.out.println("my_float=" + rs.getFloat("my_float"));
      System.out.println("my_double=" + rs.getDouble("my_double"));

      //Type de point fixe
      System.out.println("my_numeric=" + rs.getBigDecimal("my_numeric"));
      System.out.println("my_decimal=" + rs.getBigDecimal("my_decimal"));

      //Type d'heure
      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();
  }

  //Obtenez le nom du type JDBC
  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;
  }
}

Résultat d'exécution

Exécutez avec la tâche d'exécution de Gradle.

$ gradle run

> Task :compileJava
Mise en garde:/Users/foo/bar/src/main/java/JdbcSample.java utilise la fonctionnalité de langue de prévisualisation.
Mise en garde:Le détail est,-Xlint:Veuillez recompiler avec l'option d'aperçu.

> Task :run
Nom de colonne-Type JDBC-Type SQL spécifique à la base de données-Type d'objet Java
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

Nom de colonne-Valeur de la colonne
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

Matériel de référence

Recommended Posts

Exemple de code pour obtenir les valeurs de type SQL clés dans Java + MySQL 8.0
Exemple de code pour obtenir les valeurs des principaux types SQL dans Java + Oracle Database 12c
Exemple de code pour obtenir les valeurs de type JDBC clés dans la base de données Java + H2
Exemple de code source pour trouver le multiple commun minimum de plusieurs valeurs en Java
Obtenez le résultat de POST en Java
Comment obtenir la date avec Java
Exemple de code pour appeler l'API Yahoo! Local Search en Java
Comment obtenir la longueur d'un fichier audio avec Java
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
Branchement conditionnel du résultat de l'instruction SQL pour n'en rechercher qu'une seule en Java
[Java] Comment obtenir l'URL de la source de transition
Exemple de code pour convertir List en List <String> dans Java Stream
[Java] Comment obtenir la valeur maximale de HashMap
Source utilisée pour obtenir l'URL de la source de redirection en Java
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Comment obtenir le nom d'une classe / méthode exécutée en Java
Une explication rapide des cinq types de statique Java
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
Éléments à prendre en compte lors de l'écriture de code en Java
Comment dériver le dernier jour du mois en Java
Devinez le code de caractère en Java
Obtenir des valeurs de carte nulles en Java
Liste des types ajoutés dans Java 9
[Java] Obtenez les dates des derniers lundi et dimanche dans l'ordre
La milliseconde définie dans /lib/calendars.properties de Java jre est UTC
Exemple de code utilisant JMustache, le moteur de modèles Moustache en Java
Comment incrémenter la valeur de Map sur une ligne en Java
SQL pour obtenir la liste des schémas (Oracle / MySQL / PostgreSQL / SQLServer / Cassandra)
Référence Java à comprendre dans la figure
Exemple de code pour la sérialisation et la désérialisation des énumérations Java Enum et JSON dans Jackson
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
[Java] Comment obtenir le répertoire actuel
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
Comment trouver le nombre total de pages lors de la pagination en Java
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
À partir de Java9, les constructeurs de classe correspondant aux types primitifs sont marqués comme obsolètes.
Je veux obtenir le nom de champ du champ [Java]. (Vieux ton d'histoire)
L'histoire de l'écriture de Java dans Emacs
Exemple pour décompresser le fichier gz en Java
Comment créer votre propre annotation en Java et obtenir la valeur
[Swift] Comment obtenir le nombre d'éléments dans un tableau (super basique)
graphql-ruby: Comment obtenir le nom de la requête ou de la mutation dans le contrôleur Remarque
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
[Java] Exemple de programme qui acquiert les valeurs maximum et minimum d'un tableau
Résumer le cycle de vie des objets Java à prendre en compte dans le développement Android
[Java] Comment obtenir facilement la plus longue chaîne de caractères d'ArrayList à l'aide de stream
[Rails5.2] Prise en charge des pictogrammes de Mysql 5.7 dans Docker (changez le code de caractère en utf8mb4)
AndroidStudio Faisons référence au C ++ dans le module des autres projets (Java / kotlin)
Code pour supprimer tous les fichiers du préfixe spécifié dans AWS S3 (Java)
L'histoire de la comparaison de chaînes de bas niveau en Java
[Java] Gestion des Java Beans dans la chaîne de méthodes
L'histoire de la fabrication d'un Othello ordinaire à Java
À propos de l'idée des classes anonymes en Java
L'histoire de l'apprentissage de Java dans la première programmation
Mesurer la taille d'un dossier avec Java
[Java] Obtenir la longueur de la chaîne de paire de substitution