ho un database per esercitarsi su phpMyAdmin. io uso XAMPP. Sono in una fase iniziale di apprendimento della connessione con un database. Seguo un tutorial e penso di capire il concetto e tutto è bello. Ma ho pestato un problema che, nonostante il fatto che ci siano risposte su Internet, non posso risolverlo. ecco il mio codice:
import java.sql.*;
public class DBConnect {
private Connection connection;
private Statement statement;
private ResultSet result;
public DBConnect(){
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:1234/practicedb"); //code stucks here and after some minutes it is throwing an exception
System.out.println("Connected");//this is never executed.
statement = connection.createStatement();
} catch (Exception ex) {
System.out.print("Error in Constractor: "+ex);
}
}
public void getData() {
try {
String query = "select * from cars";
result = statement.executeQuery(query);
while (result.next()) {
String name = result.getString("carName");
String id = result.getString("carID");
String modelNum = result.getString("modelNumber");
System.out.println("Car name: " + name + ", " + "Car ID: " + id + ", " + "Car model number: " + modelNum);
}
} catch (Exception ex) {
System.out.println(ex);
}
}
}
Nella classe principale creo un'istanza della classe e poi chiamo il getData()
.
Il codice si blocca in quella linea:
connection = DriverManager.getConnection("jdbc:mysql://localhost:1234/practicedb");
E lancia quello:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
L'ultimo pacchetto inviato correttamente al server era 0 millisecondi fa. Il driver non ha ricevuto alcun pacchetto dal server.java.lang.NullPointerException
Questa domanda simile è stata risposta qui: risposta
Ma i suggerimenti sono poveri. Ho provato a lavare il DNS. Ho controllato l'URL e questo è quello che mi collego al database su phpmyadmin. Ho cambiato localhost al mio indirizzo IP. ma tutti quelli non funzionano.
Apprezzerei molto l'aiuto. È il primo passo per riuscire a ricevere quella conoscenza e in realtà non posso procedere al momento. Grazie :)
- ho notato che se cambio il localhost:1234 a uno casuale come localhost: 5432 sta lanciando immediatamente l'errore. Ma quando lo ho su 1234 (che ho scelto la porta attraverso xampp config), il programma gira per circa 5 minuti prima che venga terminato con l'eccezione
risposte:
-3 per risposta № 1Solitamente MySQL ascolta la porta predefinita 3306. Se il tuo database è nominato practicedb allora il tuo codice dovrebbe assomigliare a questo:
private Connection connection;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/practicedb");
System.out.println("Connected");
} catch (Exception ex) {
System.out.print("Error creating connection: "+ex);
}