sql >> Database >  >> RDS >> Mysql

Breng een gepoolde verbinding tot stand met MySQL in Android

Deze vraag is 6 jaar oud en Mark heeft gelijk dat, in bijna elk scenario dat je maar kunt bedenken, JDBC op Android ongeveer net zo verstandig is als proberen een broodrooster in bad te gebruiken. Soms doen we echter dingen omdat we het kunnen en niet omdat het noodzakelijkerwijs zou moeten, en vandaag had ik een gerechtvaardigde reden om dit te willen doen (voor een specifieke, zeer niche-app die in een ongebruikelijke omgeving draait), en zo vond ik deze vraag.

De NoClassDefFoundError . aanpakken ten eerste, de reden waarom het niet wordt gevangen door de catch blok is omdat het een Error . is geen Exception . Beide Error en Exception erven van Throwable , dus je zou dat in plaats daarvan kunnen vangen:

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

Ik geloof dat het niet MySqlDataSource . is die het niet kan vinden, maar een van de klassen of interfaces waarvan het afhankelijk is - in mijn geval was het javax.naming.Referenceable . Android biedt niet de javax.naming pakket dus proberen om de pooling-functies van het Connector/J JDBC-stuurprogramma voor MySQL te gebruiken, zal je niet erg ver brengen (je zou kunnen proberen de ontbrekende afhankelijkheden op te geven, maar die weg leidt waarschijnlijk tot waanzin).

In plaats daarvan heb je waarschijnlijk meer geluk met een implementatie van een verbindingspool van derden. Er zijn verschillende Java-bibliotheken om dit te doen. Sommigen van hen werken op Android. Een waarvan ik heb geverifieerd dat deze werkt, is HikariCP . Er zijn instructies voor het configureren hier en, specifiek voor MySQL, hier .




  1. Is een MySQL-view sneller dan een normale query?

  2. Upgraden van SonarQube van 4.5.2 naar 5.0 . mislukt

  3. Stel het resultaat van een query in op een variabele in MySQL

  4. MySQL SELECT-teller, groeperen op