この質問は6歳であり、Markは正しいです。考えられるほとんどすべてのシナリオで、Android上のJDBCは、お風呂でトースターを使おうとするのと同じくらい賢明です。ただし、必ずしもそうする必要があるからではなく、できるという理由で何かを行うことがあります。今日、これを実行したいという正当な理由がありました(通常とは異なる環境で実行される特定の非常にニッチなアプリの場合)。これが、この質問を見つけた理由です。
NoClassDefFoundError
への対処 まず、catch
に捕まえられない理由 ブロックはError
であるためです Exception
ではありません 。両方のError
およびException
Throwable
から継承 、代わりにそれをキャッチすることができます:
catch (Throwable t)
{
// This will catch NoClassDefFoundError
}
MySqlDataSource
ではないと思います 見つからないが、依存しているクラスまたはインターフェースの1つ-私の場合はjavax.naming.Referenceable
。 Androidはjavax.naming
を提供していません パッケージなので、MySQL用のConnector / J JDBCドライバーのプーリング機能を使用しようとしても、それほど遠くはありません(不足している依存関係を提供しようとすることもできますが、その道は狂気につながる可能性があります)。
代わりに、サードパーティの接続プールの実装でおそらくより多くの運があります。これを行うためのさまざまなJavaライブラリがあります。それらのいくつかはAndroidで動作します。私が確認したのは、HikariCP です。 。 こちら で設定する手順があります 特にMySQLの場合は、こちら 。