【问题标题】:ClassNotFoundException when connecting with mysql jdbc connector on android与android上的mysql jdbc连接器连接时出现ClassNotFoundException
【发布时间】:2012-05-24 15:52:56
【问题描述】:

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

我将 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 at java.lang.Class.classForName。

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

怎么了?

【问题讨论】:

  • 您是否也将 mysql 连接器 jar 添加到您的类路径中?不清楚您所说的“添加...到引用库”是什么意思。
  • 你把罐子放进libs了吗?
  • 是的,是的。引用的库是指eclipse中的“引用库”->包资源管理器-> myproject

标签: java android mysql classnotfoundexception connector


【解决方案1】:

见:http://developer.android.com/search.html#q=dx&t=0Android JDBC not working: ClassNotFoundException on driver - 我在底部的回答给出了荒谬的具体说明,尽管我很好奇切换到 1.6 有什么用处。

【讨论】:

  • mysql-connector-java-5.1.20 对我也不利
【解决方案2】:

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

【讨论】:

【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

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

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

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

    【讨论】:

    • 我知道,我以前的版本使用了这种类型的连接,但我的老板认为不同。我们只使用局域网连接,不想发布这个应用程序。
    • @K_Anas :您能否展示一下您所说的代码示例?我的意思是创建 Web 服务来访问 mysql 数据库。
    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-20
      • 2014-06-20
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 2015-09-05
      相关资源
      最近更新 更多