DataBase in Java

 

Java ha la possibiltà di interaggire con un database tramite l'utilizzo di un driver JDBC. Occorre scaricare quello per gestire database MySql mysql-connector-j-8.3.0.jar questo drive è distribuito come una libreria dal sito:

https://dev.mysql.com/downloads/connector/j/ di MySql. Per scaricarlo prima bisogna creare un account Oracle e loggarsi, poi in Seleziona il sistema operativo scegliere: Piattaforma Indipendente poi:

Indipendente dalla piattaforma (indipendente dall'architettura), archivio ZIP ed in fine Scaricare.

 

Aggiungere la libreria mysql-connector-j-8.3.0.jar al progetto ed aggiungere import java.sql.*;

 

Classe: DbLocal

 1 package dblocal;
 2 
 3 import java.sql.*;
 4 
 5 public class DbLocal {
 6     public static void main(String[] args) {
 7         String url = "jdbc:mysql://localhost:3306/Parenti";
 8         String username = "root";
 9         String password = ""; // Lascia vuota se non hai impostato una password
10 
11         try (Connection conn = DriverManager.getConnection(url, username, password);
12              Statement stmt = conn.createStatement();
13              ResultSet rs = stmt.executeQuery("SELECT Nome, Cognome, Eta, "
14                      + "Nascita, Sesso FROM Componenti")) {
15 
16             while (rs.next()) {
17                 String nome = rs.getString("Nome");
18                 String cognome = rs.getString("Cognome");
19                 int eta = rs.getInt("Eta");
20                 Date nascita = rs.getDate("Nascita");
21                 String sesso = rs.getString("Sesso");
22 
23                 // Visualizza i risultati
24                 System.out.println("Nome: " + nome 
25                         + ", Cognome: " + cognome 
26                         + ", Età: " + eta 
27                         + ", Data di nascita: " + nascita 
28                         + ", Sesso: " + sesso);
29             }
30         } catch (SQLException e) {
31             e.printStackTrace();
32         }
33     }
34 }

 

Questo progetto funziona perfettamente.

 

Ora proverò a fare un'altro progetto per interagire con un Database remoto

 

Classe: DbRemoto

1 package dbremoto;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.sql.Statement;
 8 
 9 public class DbRemoto {
10     public static void main(String[] args) {
11         // Credenziali di accesso al database
12         String host = "62.149.150.116:3306";
13         String database = "Sql349735_2";
14         String username = "Sql349735";
15         String password = "********";
16         String user;
17 
18         // URL di connessione al database
19         String url = "jdbc:mysql://" + host + "/" + database;
20 
21         // Dichiarazione delle variabili per la connessione e lo statement SQL
22         Connection conn = null;
23         Statement stmt = null;
24 
25         try {
26             // Connessione al database
27             conn = DriverManager.getConnection(url, username, password);
28 
29             // Creazione dello statement SQL
30             stmt = conn.createStatement();
31 
32             // Esecuzione della query per recuperare il contenuto della tabella
33             String query = "SELECT id_stf, user, pasw FROM staf";
34             ResultSet rs = stmt.executeQuery(query);
35 
36             // Iterazione sui risultati e stampa dei valori dei campi
37             while (rs.next()) {
38                 int id = rs.getInt("id_stf");
39                 user = rs.getString("user");
40                 password = rs.getString("pasw");
41 
42                 // Stampa dei valori dei campi
43                 System.out.println("ID: " + id);
44                 System.out.println("User: " + user);
45                 System.out.println("Password: " + password);
46             }
47 
48             // Chiusura del ResultSet, dello statement e della connessione
49             rs.close();
50             stmt.close();
51             conn.close();
52         } catch (SQLException e) {
53             e.printStackTrace();
54         }
55     }
56 }

 

Questo codice purtroppo non può funzionare. Il problema è che il database MySql residente in remoto sui server del provider aruba non permette l'accesso dall''esterno della loro piattaforma. L'unico modo per accedere è mediante linguaggi di programmazione lato server tipo PHP. Se si scrive una pagina web file.php e su di essa si scrive del codice php che si interessa di attivare la connessione, codice del resto simile a quello che abbiamo scritto in jiava e si posta sul server remoto essa si verrà a trovare nello stesso ambiente remoto sul server Apache assieme all'interprete PHP e il database MySql. Quando la pagina php verrà eseguita chiederà la connessione al database che si trova nello stesso luogo ed allora il database risponderà. Non è permesso chiedere la connessione dall'esterno. Non so dirvi se altri provider possano permettere l'accesso esterno so cheAruba.it non lo fa.

Ma del resto non avrebbe senso. Se volessi realizzare un programma java che fa uso di database e poi lo volessi portare a casa di un amico, per farglielo vedere, dovrei prima istallargli tutta la piattaforma ossia il server Apache, il MySql, il php. Poi dovrei istallare il JDK con la Virtual Machine, caricare sul MySql i database e le relative tabelle, caricare il programma Java ed eseguirlo. Questo comporterebbe una giornata di lavoro, come vedete è una cosa non reatilizzabile. Invece se scrivessi delle pagine web in php che fanno la stessa cosa, andando dal mio amico basterà richiamare la pagina index del file php da google e avremo a disposizione il programma, seza dover fare nulla. E se fossimo al mare magari sotto l'omgrellone, bastera richiamarlo dallo Smartphone e lo avremo a disposizione. Capite la differenza.