Italian B4J : MySql & Aruba

MARCO C.

Active Member
Licensed User
Buongiorno Ragazzi,
ultimamente utilizzo B4J e Mysql su un db presente su Hosting Web gratuito della Netsons.org.
Ftp e MySql ... tutto OK.
Per il MySql utilizzavo il seguente codice

B4X:
#Region Project Attributes
    #MainFormWidth: 900
    #MainFormHeight: 600
    #AdditionalJar: mysql-connector-java-5.1.39.jar
#End Region

Sub Process_Globals
    Private fx As JFX
    Private MainForm As Form
    
    Dim  SQLCon As SQL

    'Impostazioni per Accesso Diretto al Database
    Type MyDirectDatabase (dbhost As String, _
              dbport As String, _
              dbname As String, _
              dbusername As String , _
              dbpassword As String)
    Dim dbMySQL As MyDirectDatabase
    
    
  dbMySQL.dbhost ="webapp3.netsons.net" 
  dbMySQL.dbport = 3306 '
 dbMySQL.dbname ="yqfgqahvs_xxx"
  dbMySQL.dbusername ="xxxyyyttt"
 dbMySQL.dbpassword = "password"

per la connessione il seguente codice

B4X:
Sub ConnectDatabase
    '    MySQL Connection Attempt
    Try
        'SQLCon.Initialize2("com.mysql.jdbc.Driver", "jdbc:mysql://" & dbMySQL.dbhost & ":" & dbMySQL.dbport & "/" & dbMySQL.dbname & "?characterEncoding=utf8",dbMySQL.dbusername,dbMySQL.dbpassword)
        SQLCon.InitializeAsync("SQLCon" ,"com.mysql.jdbc.Driver", "jdbc:mysql://" & dbMySQL.dbhost & ":" & dbMySQL.dbport & "/" & dbMySQL.dbname & "?characterEncoding=utf8",dbMySQL.dbusername,dbMySQL.dbpassword)

    Catch
        ' handle Error, like
        Log("ERROR: " & LastException.Message)
    End Try

End Sub

Ora ho la necessità di accedere ad un DB MySql fornito da Aruba e
pensavo semplicemente di modificare i dati di accessi con quelli che mi ha fornito Aruba ...esempio:

dbMySQL.dbhost ="65.159.151.120"
dbMySQL.dbport = "3306" "
dbMySQL.dbname ="sql990779_2"
dbMySQL.dbusername ="sql990779"
dbMySQL.dbpassword = "e991c99e"
'

Ma mi segnala mancata connessione
Qualcuno ha mai lavorato con Aruba ??

Grazie in anticipo
 

MARCO C.

Active Member
Licensed User
Scusate , il log dell'errore è il seguente :


Waiting for debugger to connect...
Program started.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:988)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2251)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at anywheresoftware.b4j.objects.SQL.Initialize2(SQL.java:57)
at anywheresoftware.b4j.objects.SQL$1.call(SQL.java:98)
at anywheresoftware.b4j.objects.SQL$1.call(SQL.java:1)
at anywheresoftware.b4a.BA$4.run(BA.java:272)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
... 23 more
 

udg

Expert
Licensed User
Longtime User
In genere, per motivi di sicurezza, non è concesso raggiungere direttamente il DBMS (in questo caso mySQL sulla porta standard 3306).
In pratica devi provare a verificare se l'utente con cui cerchi di connetterti è abilitato all'accesso remoto sul DB.
Poi che non siano attivi filtri o altro, ad esempio un firewall che blocchi quella porta.
 

MARCO C.

Active Member
Licensed User
Grazie Sergio ,
Ma se non sbaglio avevo già fatto un test con questa tecnica mista in Php e B4A , e se non ricordo male avevo auto dei problemi nel caso di select che mi restituisce troppo risultati .... Se non ricordo male troncava qualcosa .
Comunque , mi metto sotto, ora però con B4J e ti dico.
Grazie ancora
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…