Italian problemi di connessione a database MySQL

tmtube73

Active Member
Licensed User
Buongiorno a tutti,

Sto sfruttando il seguente esempio per collegarmi ad un database mysql e leggere i record della tabella operatori
quando avvio il debug scrive soltanto Log("---------- Inizio tentativo di connessione a MySQL ----------")
sembra che la app tenti di eseguire le due righe qui sotto ma dopo un po la app termina da sola
la sub MYSQL_Ready non viene mai eseguita
Qualcuno sa quale può essere il problema?

B4X:
MYSQL.Initialize(Me, "MYSQL")
MYSQL.Connect("com.mysql.jdbc.Driver", $"jdbc:mysql://${MyLocation}/${MyDataBaseName}?useSSL=false"$, MyUsername, MyPassword)


questo è il codice completo

B4X:
#Region  Project Attributes
    #ApplicationLabel: SQL
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

'MySQL Connector/J Driver
#AdditionalJar: mysql-connector-java-5.1.47-bin.jar

'MSSQL Connector/J Driver
#AdditionalJar: jtds-1.3.1.jar


#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    
    Dim MYSQL As SD_SQL
    Private MyLocation As String = "ftp.miosito.it"
    Private MyUsername As String = "miouser"
    Private MyPassword As String = "1234abcd"
    Private MyDataBaseName As String = "miodb"
    
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    Private ListViewMy As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout1")

    Sleep(100)

    Log("---------- Inizio tentativo di connessione a MySQL ----------")
    Try
        MYSQL.Initialize(Me, "MYSQL")
        MYSQL.Connect("com.mysql.jdbc.Driver", $"jdbc:mysql://${MyLocation}/${MyDataBaseName}?useSSL=false"$, MyUsername, MyPassword)
        Log("---------- Connessione in corso ----------")
    Catch
        Log("Errore di connessione: " & LastException.Message)
    End Try
    Wait For MYSQL_Ready (Success As Boolean)
    If Success Then
        Log("---------- Connesso correttamente a MySQL ----------")
    Else
        Log("---------- Connessione a MySQL fallita ----------")
    End If
End Sub


Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub



Sub MYSQL_Ready (Success As Boolean)
    ListViewMy.SingleLineLayout.Label.TextColor = Colors.Black
    ListViewMy.SingleLineLayout.Label.TextSize = 13
    ListViewMy.Clear
    If Success Then
        Try
            Dim RS As SD_ResultSet = MYSQL.ExecQuery("SELECT * FROM operatori")
            If RS.IsInitialized Then
                Do While RS.NextRow
                    ListViewMy.AddSingleLine(RS.GetString2(1)) ' Assicurati che questo indice sia corretto
                    Log("riga!")
                Loop
                RS.Close
            Else
                Log("ResultSet non inizializzato")
            End If
        Catch
            Log(LastException.Message)
        End Try
    Else
        Log("Connessione al database non riuscita")
    End If
End Sub
 

tmtube73

Active Member
Licensed User

vero ho messo sql ma il risultato non cambia
esce solo Log("---------- Inizio tentativo di connessione a MySQL ----------")
e dopo un pò la app si chiude senza dare errori nei logs

pare che il problema sia a questa riga

B4X:
MYSQL.Connect("com.mysql.jdbc.Driver", $"jdbc:mysql://${MyLocation}/${MyDataBaseName}?useSSL=false"$, MyUsername, MyPassword)
 

Star-Dust

Expert
Licensed User
Longtime User
Stai accedendo a un sito esterno? Solitamente non è possibile accedere a un DB MYSQL in maniera cosi diretta e si usa PHP (o asp)
Si accede in maniera diretta se il server MySQL è locale e non ci sono firewall o altri sistemi che impediscano l'accesso dall'esterno come una DMZ
 

tmtube73

Active Member
Licensed User
ok immagino che devo richiamare delle pagine php che eseguono la query ma la pagina php deve essere all'interno dell'hosting. dico bene?
 

Star-Dust

Expert
Licensed User
Longtime User
ok immagino che devo richiamare delle pagine php che eseguono la query ma la pagina php deve essere all'interno dell'hosting. dico bene?
Si, puoi vedere esempi qui:
o qui

Nel forum inglese
 

FabioRome

Member
Licensed User
Longtime User
Per una maggiore sicurezza,
ti consiglio di mettere un file PHP nella parte www e dentro questo PHP fare una include di un altro file PHP con le connessioni mysql messo in una cartella del server non raggiungibile direttamente, ad esempio:
/private/mio_file_connessioni_mysql.php
/logs/
/public_html/file.php con include percorso/mio_file_connessioni_mysql.php
 

sirjo66

Well-Known Member
Licensed User
Longtime User
esatto, infatti se guardate il codice PHP che vi ha segnalato Star-Dust nel primo link, c'è la riga
B4X:
include('include/config.php');
proprio per questo motivo
 
Top