Java 在android上连接mysql jdbc连接器时发生ClassNotFoundException

Java 在android上连接mysql jdbc连接器时发生ClassNotFoundException,java,android,mysql,classnotfoundexception,connector,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 Connec

我找到了一些答案,但没有什么有用的

我将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.Class.classForName上得到一个java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

如果我不使用try…catch。。。然后我在编译之前得到这个异常


怎么了

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

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

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

JDBC设计用于高带宽、低延迟、高可靠性的网络连接(例如,桌面到数据库服务器、Web应用程序服务器到数据库服务器)。移动设备提供的这些功能很少,而且没有一个是始终如一的

因此,我建议您使用的替代方案包括:

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


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

这应该行得通,可能是您应该尝试使用另一个JavaSDK和另一个Android平台。

请参阅:
下面的答案给出了非常具体的说明,尽管我很好奇切换到1.6有多有用。

您是否也将mysql连接器jar添加到了类路径中?不清楚“添加到引用库”是什么意思。您是否将jar放入了
libs
?是的,是的。引用库是指eclipse->PackageExplorer->myprojecti-know中的“引用库”,我以前的版本使用了这种类型的连接,但我的老板认为不同。我们只使用局域网连接,不想发布此应用程序。@K_Anas:您能展示一下您所说的代码示例吗?我的意思是创建web服务来访问mysql数据库。mysql-connector-java-5.1.20对我来说也不好