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

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

怎么了?

4

5 回答 5

1

请参阅:http: //developer.android.com/search.html#q=dx&t=0Android JDBC 不工作:驱动程序上的 ClassNotFoundException - 我在底部的回答给出了荒谬的具体说明,尽管我很好奇如何切换到 1.6有用。

于 2012-05-30T19:06:23.417 回答
0

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

于 2012-05-24T15:59:23.750 回答
0

它可能不起作用,因为 Android 使用了一些不同的字节码。Tyr 检查 MySQL JDBC 库是否正确转换为 Dalvik 的格式。有一个名为dex的工具,用于将 JVM 字节码转换为 Dalvik 的字节码。如果 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 回答