Skip to content

Connettersi ed utilizzare mySQL con Xojo

Tra i vari database a cui Xojo può connettersi, certamente mySQL è tra i più noti e utilizzati. Ecco alcune piccole accortezze per poter lavorare in tranquillità utilizzando gli accenti previsti nella nostra lingua.

Il plugin compreso nell’installazione di Xojo non prevede una conversione di codifica. Questo comporta che in genere, anche se il database è stato definito con una codifica di tipo UTF8, lavorandoci possiamo avere dei problemi.

Vediamo intanto come connettersi ed impostare la connessione in UTF8:

//Prepariamo la connessione
dim db as new MySQLCommunityServer
db.Host="yourHostAddress"
db.UserName="yourUserName"
db.Password="yourPassword"
db.DatabaseName="yourDatabaseName"

All’atto della connessione la impostiamo a UTF8

//Impostiamo che la connessione è UTF8
if db.Connect then db.SQLExecute "SET NAMES 'utf8'"

Per poter leggere il dato di un campo testuale con la codifica corretta (ricordiamoci che Xojo utilizza internamente UTF8 per le stringhe) possiamo scrivere:

//rs è il recordset ottenuto da una query sul db
dim mystring as string=rs.field("myField").stringValue.defineEconding(encodings.utf8)

O ancora meglio in un modulo possiamo scrivere una estensione al field di un recordSet per avere il valore stringa in UTF8:

Public function UTF8Value(extends field as databaseField) as String
    if field.stringValue.encoding=nil then
        return field.stringValue.defineEncoding(encoding.utf8)
    else
        return field.stringValue
    end if
end function

In questo modo possiamo tranquillamente lavorare con la stringa ottenuta. Tra l’altro questo problema è subdolo, in quanto una stringa con codifica UTF8 concatenata ad una con codifica nil (come quella ottenuta da un recordSet di mySQL) dà come risultato una stringa con codifica nil con tutti i problemi che possono insorgere.

Tra l’altro questo è uno dei motivi per cui, nel nuovo framework, è stato introdotto il tipo Text.