与Android上的mysql jdbc连接器连接时发生ClassNotFoundException

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

我将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 ...那么我在编译之前得到这个异常。

怎么了?

0
额外 编辑
意见: 1
是的是的。在eclipse - > package explorer - > myproject中引用库意味着“引用库”
额外 作者 Hei Ranch,
你是否还将mysql连接器jar添加到你的类路径中?不清楚“添加...到引用库”的含义。
额外 作者 QuantumMechanic,

5 答案

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

0
额外
不能找到这个工具。甚至谷歌不显示有用的条目。
额外 作者 Hei Ranch,

它应该工作,可能你应该尝试使用另一个JavaSDK和另一个Android平台。

0
额外
你推荐哪个sdk?
额外 作者 Hei Ranch,

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

0
额外
好吧,我的classpath文件:
额外 作者 Hei Ranch,
不幸的是不工作
额外 作者 Hei Ranch,

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

JDBC专为高带宽,低延迟,高度可靠的网络连接(例如桌面到数据库服务器,Web应用程序服务器到数据库服务器)而设计。移动设备很少提供这些功能,而且它们中的任何一项都不一致

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

在数据库周围创建一个Web服务并从Android访问。

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

0
额外
@K_Anas:您能否展示您所说的代码示例?我的意思是创建Web服务来访问MySQL数据库。
额外 作者 GAMA,
我知道,我以前的版本使用这种类型的连接,但我的老板认为不同。我们只使用局域网连接而不想发布这个应用程序。
额外 作者 Hei Ranch,

see: http://developer.android.com/search.html#q=dx&t=0 and Android JDBC not working: ClassNotFoundException on driver - my answer on the bottom gives ridiculously specific instructions, although I am curious how switching to 1.6 was useful.

0
额外
好吧,我用你的库而不是mysql-connector-java-5.1.7
额外 作者 Hei Ranch,
mysql-connector-java-5.1.20对我也不好
额外 作者 Hei Ranch,