在android上连接mysql jdbc连接器时出现ClassNotFoundException

时间:2012-05-24 15:52:56

标签: java android mysql classnotfoundexception connector

我找到了一些答案,但没有任何用处。

我将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();

}

我启动了我的app并在java.lang.Class.classForName上获得了java.lang.ClassNotFoundException:com.mysql.jdbc.Driver。

如果我不使用try ... catch ...那么在编译之前我会得到这个例外。

怎么了?

5 个答案:

答案 0 :(得分:1)

见:http://developer.android.com/search.html#q=dx&t=0Android JDBC not working: ClassNotFoundException on driver - 我在底部的回答给出了非常具体的指示,尽管我很好奇如何切换到1.6是有用的。

答案 1 :(得分:0)

验证是否已导出库(exported="true"文件中具有.classpath属性)。您也可以在Eclipse的项目设置中的相应选项卡中执行此操作。

答案 2 :(得分:0)

由于Android使用了不同的字节码,因此可能无效。 Tyr检查MySQL JDBC库是否正确转换为Dalvik的格式。有一个名为dex的工具,用于将JVM字节码转换为Dalvik的字节码。如果JDBC驱动程序包含的类不能移植到Android或某些本机代码 - 您无法在Android中使用它

答案 3 :(得分:0)

在Android上很少使用JDBC,我当然不会推荐它。

JDBC专为高带宽,低延迟,高可靠性的网络连接(例如,桌面到数据库服务器,Web应用程序服务器到数据库服务器)而设计。移动设备提供的内容很少,而且没有一致。

所以我建议您使用的替代方案包括:

围绕您的数据库创建一个Web服务,并从Android访问该服务。

作为附带好处,您可以提高安全性(与打开数据库相比),可以从客户端卸载一些业务逻辑,可以更好地支持其他平台(例如,基于Web或基于Web的移动框架)等。

答案 4 :(得分:0)

应该可以使用,也许你应该尝试使用另一个JavaSDK和另一个Android平台。