Mysql
 sql >> Database >  >> RDS >> Mysql

Stabilisci una connessione in pool a MySQL in Android

Questa domanda ha 6 anni e Mark ha ragione sul fatto che, in quasi tutti gli scenari a cui puoi pensare, JDBC su Android è sensato quanto provare a usare un tostapane nella vasca da bagno. Tuttavia, a volte facciamo le cose perché possiamo e non perché necessariamente dovremmo, e oggi avevo un motivo giustificato per volerlo fare (per un'app specifica molto di nicchia in esecuzione in un ambiente insolito), ed è così che ho trovato questa domanda.

Affrontare il NoClassDefFoundError in primo luogo, il motivo per cui non viene catturato dal catch blocco è perché è un Error non una Exception . Entrambi Error e Exception eredita da Throwable , quindi potresti prenderlo invece:

catch (Throwable t)
{
    // This will catch NoClassDefFoundError
}

Credo che non sia MySqlDataSource che non riesce a trovare, ma una delle classi o interfacce da cui dipende - nel mio caso era javax.naming.Referenceable . Android non fornisce il javax.naming pacchetto quindi provare a utilizzare le funzionalità di pooling del driver JDBC Connector/J per MySQL non ti porterà molto lontano (potresti provare a fornire le dipendenze mancanti ma quella strada probabilmente porta alla follia).

Invece probabilmente avrai più fortuna con un'implementazione di pool di connessioni di terze parti. Ci sono varie librerie Java per fare questo. Alcuni di loro funzioneranno su Android. Uno che ho verificato funziona è HikariCP . Ci sono le istruzioni per configurarlo qui e, in particolare per MySQL, qui .