Esperto di

Il dettaglio più importante è la libreria JDBC Driver per il server MySQL stesso. Semplicemente non verrà visualizzato sul tuo computer, quindi devi aggiungerlo lì.

Se stai usando Maven, allora devi aiutarlo indicando la libreria giusta.

Driver JDBC MySQL :

   	<dependency>
        	<groupId>mysql</groupId>
        	<artifactId>mysql-connector-java</artifactId>
        	<version>8.0.29</version>
    	</dependency>

Basta aggiungere questo codice al tuo pom.xml .

Darò anche alcuni driver più popolari.

Driver JDBC per PostgeSQL :

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.4.0</version>
</dependency>

Driver JDBC per Oracle :

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>21.5.0.0</version>
</dependency>

Driver JDBC per H2 :

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
</dependency>

Prima interrogazione del database

Tutte le librerie richieste sono incluse, ora è il momento di eseguire il tuo primo programma di accesso al database. Scriveremo tutto il codice nel metodo main() .

Fase 1 . Aggiungi alcune importazioni prima del metodo main() - questo renderà la tua vita molto più semplice:

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

Fase 2 . Per prima cosa dobbiamo creare una connessione al database. Per fare ciò, nel metodo main() , scrivi il seguente codice:

Connection connection  = DriverManager.getConnection(
           "jdbc:mysql://localhost:3306/test",
           "login", "password");

Puoi anche farlo in una riga, a seconda di quale sia più conveniente per te. Login e password, ovviamente, devi sostituire quelli veri dal tuo server MySQL locale.

Fase 3 . Creiamo una query al database. Prendiamo tutti gli utenti dalla tabella degli utenti. Quindi dovrai aggiungere questa riga di codice:

Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery("SELECT * FROM user");

Sono due righe. Nella prima creiamo un oggettoDichiarazione, e nel secondo lo usiamo per interrogare il database. Il metodo executeQuery() esegue una query sul database e restituisce un oggetto di tiposet di risultati.

Fase 4 . Visualizza i dati contenuti nell'oggettoset di risultati.

set di risultati- non è un set, si chiama solo così. Memorizza il risultato dell'esecuzione della query. Questo oggetto è in qualche modo simile a un iteratore: ti consente di impostare/modificare la riga corrente del risultato, quindi puoi ottenere dati da questa riga corrente. Aggiungi il seguente codice al tuo esempio:

while (results.next()) {
        	Integer id = results.getInt(1);
        	String name = results.getString(2);
        	System.out.println(results.getRow() + ". " + id + "\t"+ name);
}

Il metodo next() cambia la riga del risultato corrente in quella successiva. Restituisce vero se c'è una riga del genere e falso se non ci sono più righe.

Quindi dalla riga corrente dell'oggettoset di risultatipuoi ottenere dati dalle sue colonne:

  • getRow() - restituisce il numero della riga corrente nell'oggettoset di risultati
  • getInt(N) - restituirà i dati dell'ennesima colonna della riga corrente come int
  • getString(N) - restituirà i dati dell'ennesima colonna della riga corrente come una stringa

Elenco completo del programma

Per ridurre al minimo gli errori, ecco un elenco completo del programma:

package org.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcApplicatin {
    public static void main(String[] args) throws  Exception{
 	   Connection connection  = DriverManager.getConnection(
          	"jdbc:mysql://localhost:3306/test",
          	"root", "secret");

        Statement statement = connection.createStatement();
    	ResultSet results = statement.executeQuery("SELECT * FROM user");

    	while (results.next()) {
        	Integer id = results.getInt(1);
        	String name = results.getString(2);
        	System.out.println(results.getRow() + ". " + id + "\t"+ name);
    	}
    	connection.close();
    }
}

E il mio output sullo schermo dopo aver eseguito il programma:

"C:\Programmi\Java\jdk-17.0.3.1\bin\java.exe...
undici Ivanov Ivan
2.2 Petrov Nikolaj
3.3 Sidorov Vitaly
Processo terminato con codice di uscita 0