├── 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;
}
}
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