一尘不染

Android JDBC无法正常工作:驱动程序上的ClassNotFoundException

mysql

我试图在我的Android应用程序中使用JDBC连接到远程数据库以执行插入,查询等操作。我已经成功连接并在另一个JAVA项目中完成了这些操作。因此,我认为由于Android是Java,因此我可以移植相关代码,为驱动程序添加相同的构建路径,等等。但这给了我错误:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

我真的不认为这是代码问题,因为相同的代码可以在Java项目中工作(我只在main()中执行)。但这里供参考:

String url = "jdbc:mysql://localhost:3306/eventhub_test"; //
    String user = "root"; 
    String pass = "";

 SQLUtils sqlu = new SQLUtils(url, user, pass);

//我创建的SQLUtils类:

public class SQLUtils {


private String CONNECTION_URL;
private String user;
private String pass;
private java.sql.Statement stmt; 
private java.sql.Connection conn;

public SQLUtils(String conn_url, String user, String pass) {
    this.CONNECTION_URL = conn_url; 
    this.user = user;
    this.pass = pass; 
}


public void init() throws IllegalAccessException, InstantiationException, ClassNotFoundException, SQLException {

    Class.forName ("com.mysql.jdbc.Driver").newInstance ();
    conn = DriverManager.getConnection(CONNECTION_URL, user, pass);
    stmt = conn.createStatement();

}
}

所以我真的很困惑。JDBC是否不适用于Android?如果是这样,请告诉我对于远程MySQL数据库访问应考虑哪些替代方法。

谢谢。


阅读 310

收藏
2020-05-17

共1个答案

一尘不染

JDBC是否不适用于Android?

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

恕我直言,JDBC专为高带宽,低延迟,高度可靠的网络连接(例如,台式机到数据库服务器,Web应用程序服务器到数据库服务器)而设计。移动设备几乎没有提供这些功能,而且也没有提供一致的功能。

如果是这样,请告诉我对于远程MySQL数据库访问应考虑哪些替代方法。

在数据库周围创建一个Web服务,然后从Android访问该服务。

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

2020-05-17