0

私はいくつかの答えを見つけましたが、何も役に立ちませんでした。

参照ライブラリにmysql-connector-java-5.1.7-bin.jarを追加し、メインクラスのアクティビティに次のメソッドを追加しました。

private void getServerData(String id, String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
{
    Log.i("Database Connection", " requesting data from server");

    Class.forName("com.mysql.jdbc.Driver").newInstance();               
    Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/db_easy_maintenance", "root", "maintenance");
    Statement stm = con.createStatement();
    ResultSet rs = stm.executeQuery("SELECT Name FROM industrial_object");
    String entry;
    while(rs.next())
    {
        entry=rs.getString("Name");
        Log.i("Database Connection", "getting " + entry);
    }

    con.close();

}

アプリを起動すると、java.lang.ClassNotFoundException:com.mysql.jdbc.Driver(java.lang.Class.classForName)が表示されます。

try ... catch ...を使用しない場合、コンパイルする前にこの例外が発生します。

どうしたの?

4

5 に答える 5

1

参照:http ://developer.android.com/search.html#q=dx&t=0 およびAndroid JDBCが機能しない:ドライバーのClassNotFoundException-下部の私の回答はばかばかしいほど具体的な指示を示していますが、1.6への切り替えがどのように行われたのか興味があります使える。

于 2012-05-30T19:06:23.417 に答える
0

ライブラリがエクスポートされていることを確認します(ファイルにexported="true"属性があり.classpathます)。Eclipseのプロジェクト設定の適切なタブでこれを行うこともできます。

于 2012-05-24T15:59:23.750 に答える
0

Androidは少し異なるバイトコードを使用しているため、機能しない可能性があります。MySQLJDBCライブラリがDalvikの形式に正しく変換されたかどうかを確認するためのTyr。JVMバイトコードをDalvikのものに変換するためのdexという名前のツールがあります。JDBCドライバーが、Androidのクラスまたは一部のネイティブコードに移植できないクラスで構成されている場合、Androidでは使用できません。

于 2012-05-24T16:08:18.737 に答える
0

JDBCはAndroidで使用されることはめったにないので、絶対にお勧めしません。

JDBCは、高帯域幅、低遅延、信頼性の高いネットワーク接続用に設計されています(たとえば、デスクトップからデータベースサーバー、Webアプリケーションサーバーからデータベースサーバー)。モバイルデバイスはこれらのほとんどを提供せず、一貫してそれらのどれも提供しません。

したがって、私があなたに使用するようにアドバイスする代替案は、以下から成ります:

データベースの周りにWebサービスを作成し、Androidからアクセスします。

副次的な利点として、セキュリティを向上させ(データベースを開いたままにするのではなく)、クライアントから一部のビジネスロジックをオフロードでき、他のプラットフォーム(WebまたはWebベースのモバイルフレームワークなど)をより適切にサポートできます。

于 2012-05-24T16:28:53.417 に答える
0

動作するはずです。別のJavaSDKと別のAndroidプラットフォームで試してみてください。

于 2012-05-24T16:29:30.227 に答える