sql >> Databasteknik >  >> RDS >> Mysql

Upprätta en poolad anslutning till MySQL i Android

Den här frågan är 6 år gammal och Mark har rätt i att JDBC på Android i nästan alla scenarion du kan tänka dig är ungefär lika vettigt som att försöka använda en brödrost i badet. Men ibland gör vi saker för att vi kan och inte för att vi nödvändigtvis borde, och idag hade jag en berättigad anledning att vilja göra detta (för en specifik mycket nischad app som körs i en ovanlig miljö), vilket är hur jag hittade den här frågan.

Adressering av NoClassDefFoundError För det första, anledningen till att den inte fångas av catch blocket beror på att det är ett Error inte ett Exception . Båda Error och Exception ärva från Throwable , så du kan fånga det istället:

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

Jag tror att det inte är MySqlDataSource som den inte kan hitta, men en av klasserna eller gränssnitten som den beror på - i mitt fall var det javax.naming.Referenceable . Android tillhandahåller inte javax.naming paketet, så att försöka använda poolningsfunktionerna i Connector/J JDBC-drivrutinen för MySQL kommer inte att ta dig särskilt långt (du kan försöka tillhandahålla de saknade beroenden men den vägen leder sannolikt till galenskap).

Istället kommer du förmodligen att ha mer tur med en tredjeparts anslutningspoolimplementering. Det finns olika Java-bibliotek för att göra detta. Vissa av dem kommer att fungera på Android. En som jag har verifierat fungerar är HikariCP . Det finns instruktioner för hur du konfigurerar den här och, specifikt för MySQL, här .




  1. Nybörjarfråga om mySQL och PHP för att undvika att ansluta till DB på varje sida

  2. En metod för indexjustering – Del 1

  3. Hur beräknar man retentionsgrad i SQL?

  4. Det går inte att infoga ett främmande nyckelvärde i länkningstabellen