与android上的mysql jdbc连接器连接时出现ClassNotFoundException
Posted
技术标签:
【中文标题】与android上的mysql jdbc连接器连接时出现ClassNotFoundException【英文标题】:ClassNotFoundException when connecting with mysql jdbc connector on android 【发布时间】: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
【参考方案1】:
见:http://developer.android.com/search.html#q=dx&t=0 和Android JDBC not working: ClassNotFoundException on driver - 我在底部的回答给出了荒谬的具体说明,尽管我很好奇切换到 1.6 有什么用处。
【讨论】:
mysql-connector-java-5.1.20 对我也不利【参考方案2】:验证库是否已导出(.classpath
文件中有 exported="true"
属性)。您也可以在 Eclipse 的项目设置中的相应选项卡中执行此操作。
【讨论】:
它可能无法正常工作,因为 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 平台。
【讨论】:
以上是关于与android上的mysql jdbc连接器连接时出现ClassNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Mysql JDBC 驱动程序将 Android 与 MySQL 连接 [重复]
Android 连接到远程 mysql 数据库 JDBC Vs JSON