Connessione mysql "URL-ESTERNA"-> Java

di il
13 risposte

Connessione mysql "URL-ESTERNA"-> Java

Ciao Ragazzi sto imparando Java, sto eseguendo dei tutorial.
problema: come faccio a scrivere correttamente la url internet dove sta il mio database mysql? (perchè nei tutorial mettono sempre localhost, io invece voglio collegarlo al server) vi mostro il codice:
public class DbConnection {
	public Connection connect() {

		try {//pensavo di scrivere cosi ma mi da errore ovvio le password /user sono fittizzi:
			String url = "jdbc:mysql:https://mysql.aruba.it/phpMyAdmin-5/index.php?db=Sql106888_3&token=8ff63844fa4d301bc96509f&phpMyAdmin=uvcbautgedv0mh3gb391s5aquoskl59j";
			String user = "Sql106888_3";
			String password = "33w216ui8";

			Class.forName("com.mysql.jdbc.Driver");
			Connection conn = DriverManager.getConnection(url, user, password);
			return conn;

		} catch (ClassNotFoundException | SQLException ex) {
			// TODO Auto-generated catch block
			Logger.getLogger(DbConnection.class.getName()).log(Level.SEVERE, null, ex);
		}

		return null;
	}
}
Console:

set 13, 2017 12:45:06 PM application.DbConnection connect
GRAVE: null
java.sql.SQLException: No suitable driver found for jdbc:mysql:89.46.111.38
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at application.DbConnection.connect(DbConnection.java:19)
at application.UsersController.loadDataFromDatabase(UsersController.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8413)
at javafx.scene.control.Button.fire(Button.java:185)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:381)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:937)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Unknown Source)

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8413)
at javafx.scene.control.Button.fire(Button.java:185)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:381)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:937)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
... 48 more
Caused by: java.lang.NullPointerException
at application.UsersController.loadDataFromDatabase(UsersController.java:60)
... 58 more

13 Risposte

  • Re: Connessione mysql "URL-ESTERNA"-> Java

    Quello che hai messo come url NON ha assolutamente senso per JDBC!

    E dubito che quel servizio (come tutti gli hosting "seri") esponga direttamente un DBMS su internet.
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    Sembra che l'URL che hai inserito nella stringa sia relativa all'accesso a phpMyAdmin messo a disposizione da Aruba.

    L'url di una connessione jdbc di mysql dovrebbe essere una cosa del tipo:
    String url = "jdbc:mysql://<indirizzo del server>:<porta del server mysql>/<nome del db>";
    Ovviamente mysql dovrebbe essere settato in modo da accettare le connesioni in ingresso dall'esterno e non solo da localhost.

    Ad ogni modo, una considerazione..
    Che versione Java utilizzi?
    Dalla versione 1.7, non è più necessario utilizzare Class.forName(jdbcClass); in quanto l'Automatic Resource Management (ARM) è stato aggiunto nella versione 4.1 dei driver JDBC con cui esce tale versione della JVM.



    Ciao
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    Nota di servizio: per quanto ne so aruba non consente connessioni ai server mysql (di quel tipo) direttamente sulla porta 3306
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    +m2+ ha scritto:


    Nota di servizio: per quanto ne so aruba non consente connessioni ai server mysql (di quel tipo) direttamente sulla porta 3306
    Direi che quindi siamo a cavallo...
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    giamat86 ha scritto:


    Dalla versione 1.7, non è più necessario utilizzare Class.forName(jdbcClass); in quanto l'Automatic Resource Management (ARM) è stato aggiunto nella versione 4.1 dei driver JDBC con cui esce tale versione della JVM.
    Il Automatic Resource Management (ovvero il nuovo "try-with-resource" di Java 7), NON c'entra niente con il Class.forName usato per un driver JDBC!

    Invece è vero il fatto che il Class.forName non è strettamente necessario SE il driver JDBC è conforme alle specifiche JDBC 4.0 (o superiore) E stai usando almeno Java 6. Questo perché JDBC 4 permette il auto-loading del driver tramite il meccanismo del Service Provider che esiste proprio da Java 6.

    (studia di più Java )
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    andbin ha scritto:


    giamat86 ha scritto:


    Dalla versione 1.7, non è più necessario utilizzare Class.forName(jdbcClass); in quanto l'Automatic Resource Management (ARM) è stato aggiunto nella versione 4.1 dei driver JDBC con cui esce tale versione della JVM.
    Il Automatic Resource Management (ovvero il nuovo "try-with-resource" di Java 7), NON c'entra niente con il Class.forName usato per un driver JDBC!

    Invece è vero il fatto che il Class.forName non è strettamente necessario SE il driver JDBC è conforme alle specifiche JDBC 4.0 (o superiore) E stai usando almeno Java 6. Questo perché JDBC 4 permette il auto-loading del driver tramite il meccanismo del Service Provider che esiste proprio da Java 6.

    (studia di più Java )
    Hai ragione, ho detto una castroneria dovuta ad una lettura superficiale di un documento! Chiedo venia!
    L'Automatic Resource Management è tutt'altra cosa e riguarda la gestione automatica delle risorse (per esempio in caso di un InputStream o simili).

    Sorry ancora!

    Ad ogni modo anche io sapevo che era gia presente in Java 6 ma io ho fatto un po di prove, ma con Java 6 la necessita di utilizzare Class.forName ho visto che c'è ancora (per non incorrere in eccezioni), cosa che non devo fare se compilo e lancio il mio REST con la JVM e Tomcat aventi Java 7... Non so, secondo me c'è qualcosa di sottile tra le due versione che crea confusione sul caricamento del driver jdbc ..
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    giamat86 ha scritto:


    ma con Java 6 la necessita di utilizzare Class.forName ho visto che c'è ancora
    Sì, se non usi un driver specifico che è conforme almeno a JDBC 4.
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    andbin ha scritto:


    giamat86 ha scritto:


    ma con Java 6 la necessita di utilizzare Class.forName ho visto che c'è ancora
    Sì, se non usi un driver specifico che è conforme almeno a JDBC 4.
    Buono, quindi il problema è il jdbc di MySQL che essendo la release STABLE vecchia, non lo è!
    Perfetto provo subito!

    Ti ringrazio molto!
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    giamat86 ha scritto:


    andbin ha scritto:


    giamat86 ha scritto:


    ma con Java 6 la necessita di utilizzare Class.forName ho visto che c'è ancora
    Sì, se non usi un driver specifico che è conforme almeno a JDBC 4.
    Buono, quindi il problema è il jdbc di MySQL che essendo la release STABLE vecchia, non lo è!
    Perfetto provo subito!

    Ti ringrazio molto!
    Ho verificato, e il driver mysql è gia la versione compatibile e conforme con JDBC 4.1.. Ancora rimane un mistero questo problema.. Vabbè scusate l'OT
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    giamat86 ha scritto:


    Ho verificato, e il driver mysql è gia la versione compatibile e conforme con JDBC 4.1.. Ancora rimane un mistero questo problema.. Vabbè scusate l'OT
    Qui Connector/J Versions c'è la tabellina che mostra la compatibilità del Connector/J.
    La conformità a almeno JDBC 4 è solo dal Connector/J 5.1
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    andbin ha scritto:


    giamat86 ha scritto:


    Ho verificato, e il driver mysql è gia la versione compatibile e conforme con JDBC 4.1.. Ancora rimane un mistero questo problema.. Vabbè scusate l'OT
    Qui Connector/J Versions c'è la tabellina che mostra la compatibilità del Connector/J.
    La conformità a almeno JDBC 4 è solo dal Connector/J 5.1
    Sisi infatti ho la 5.1.43..
    Continuerò ad indagare
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    giamat86 ha scritto:


    Sisi infatti ho la 5.1.43..
    Continuerò ad indagare
    Pare strano .... non ho ora un JDK 6 a disposizione (ce l'ho a casa) ma con JDK 7 se faccio un programmino del tipo:
    import java.sql.*;
    import java.util.*;
    
    public class Prova {
        public static void main(String[] args) {
            Enumeration<Driver> en = DriverManager.getDrivers();
    
            while (en.hasMoreElements()) {
                Driver driver = en.nextElement();
                System.out.println(driver);
            }
        }
    }
    Quindi SENZA caricare esplicitamente alcunché. E poi lo lancio CON in classpath il mysql-connector-java-5.1.43.jar, a me stampa

    sun.jdbc.odbc.JdbcOdbcDriver@46192974
    com.mysql.jdbc.Driver@5da0ff10
    com.mysql.fabric.jdbc.FabricMySQLDriver@6a688d6f

    Segno quindi che il driver Connector/J del MySQL lo trova in automatico.
  • Re: Connessione mysql "URL-ESTERNA"-> Java

    andbin ha scritto:


    giamat86 ha scritto:


    Sisi infatti ho la 5.1.43..
    Continuerò ad indagare
    Pare strano .... non ho ora un JDK 6 a disposizione (ce l'ho a casa) ma con JDK 7 se faccio un programmino del tipo:
    import java.sql.*;
    import java.util.*;
    
    public class Prova {
        public static void main(String[] args) {
            Enumeration<Driver> en = DriverManager.getDrivers();
    
            while (en.hasMoreElements()) {
                Driver driver = en.nextElement();
                System.out.println(driver);
            }
        }
    }
    Quindi SENZA caricare esplicitamente alcunché. E poi lo lancio CON in classpath il mysql-connector-java-5.1.43.jar, a me stampa

    sun.jdbc.odbc.JdbcOdbcDriver@46192974
    com.mysql.jdbc.Driver@5da0ff10
    com.mysql.fabric.jdbc.FabricMySQLDriver@6a688d6f

    Segno quindi che il driver Connector/J del MySQL lo trova in automatico.

    Non avevo pensato a questo controllo!! Provo ad implementarlo questa sera e vedo il risultato! Grazie intanto!
Devi accedere o registrarti per scrivere nel forum
13 risposte