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