Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Estabeleça uma conexão em pool com o MySQL no Android


Esta pergunta tem 6 anos e Mark está certo de que, em quase todos os cenários que você pode imaginar, JDBC no Android é tão sensato quanto tentar usar uma torradeira no banho. No entanto, às vezes fazemos as coisas porque podemos e não porque necessariamente deveríamos, e hoje eu tinha uma razão justificável para querer fazer isso (para um aplicativo específico de muito nicho rodando em um ambiente incomum), e foi assim que encontrei essa pergunta.

Endereçando o NoClassDefFoundError primeiro, o motivo pelo qual não é capturado pelo catch bloco é porque é um Error não é uma Exception . Ambos Error e Exception herdar de Throwable , para que você possa pegar isso:
catch (Throwable t)
{
    // This will catch NoClassDefFoundError
}

Acredito que não seja MySqlDataSource que não pode encontrar, mas uma das classes ou interfaces das quais depende - no meu caso foi javax.naming.Referenceable . O Android não fornece o javax.naming portanto, tentar usar os recursos de pool do driver Connector/J JDBC para MySQL não o levará muito longe (você pode tentar fornecer as dependências ausentes, mas esse caminho provavelmente leva à loucura).

Em vez disso, você provavelmente terá mais sorte com uma implementação de pool de conexões de terceiros. Existem várias bibliotecas Java para fazer isso. Alguns deles funcionarão no Android. Um que eu verifiquei que funciona é HikariCP . Há instruções para configurá-lo aqui e, especificamente para MySQL, aqui .