sql >> Databáze >  >> RDS >> Mysql

Vytvořte společné připojení k MySQL v systému Android

Tato otázka je stará 6 let a Mark má pravdu, že téměř ve všech scénářích, na které si vzpomenete, je JDBC na Androidu asi tak rozumné, jako zkusit použít toustovač ve vaně. Někdy však děláme věci, protože můžeme a ne proto, že bychom nutně měli, a dnes jsem měl oprávněný důvod to chtít udělat (pro konkrétní velmi specializovanou aplikaci běžící v neobvyklém prostředí), a proto jsem našel tuto otázku.

Řešení NoClassDefFoundError za prvé, důvod, proč není zachycen pomocí catch blok je proto, že jde o Error není Exception . Obě Error a Exception zdědit z Throwable , takže to místo toho můžete zachytit:

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

Věřím, že to není MySqlDataSource že nemůže najít, ale jednu z tříd nebo rozhraní, na kterých závisí - v mém případě to byl javax.naming.Referenceable . Android neposkytuje javax.naming takže pokus o použití funkcí sdružování ovladače Connector/J JDBC pro MySQL vás příliš daleko nedostane (můžete se pokusit poskytnout chybějící závislosti, ale tato cesta pravděpodobně vede k šílenství).

Místo toho budete mít pravděpodobně více štěstí s implementací fondu připojení třetí strany. K tomu existují různé Java knihovny. Některé z nich budou fungovat na Androidu. Jeden, který jsem ověřil, že funguje, je HikariCP . Pokyny pro jeho konfiguraci jsou zde a konkrétně pro MySQL zde .




  1. Jak RandomBlob() funguje v SQLite

  2. Je možné v postgreSQL použít proměnnou a nespecifikovat návratový typ?

  3. Pochopení systémových sloupců v PostgreSQL

  4. Existuje PL/SQL pragma podobné DETERMINISTIC, ale pro rozsah jediného SQL SELECT?