当前位置: 首页 > 面试题库 >

Android JDBC不起作用:驱动程序上的ClassNotFoundException

宇文迪
2023-03-14
问题内容

我试图在我的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数据库访问应考虑哪些替代方法。

谢谢。


问题答案:

JDBC是否不适用于Android?

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

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

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

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

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



 类似资料:
  • 我们在payara 5.2020服务器上有一个J2EE应用程序,它执行一个长时间运行的查询(执行几个小时的PL/SQL)。为了避免超时异常,我们在语句级别使用以下语句: 这使用Oracle jdbc驱动程序版本12c工作,但是当我们迁移到Oracle 18c,并且我们将驱动程序更改为版本18c时,查询执行在15分钟后停止,但有此异常。这段代码适用于Oracle 12,Oracle 18是驱动程序j

  • UTCDateTime的var_dump显示有效值: 对象(MongoDB\bson\utcdatetime)#477(1){[“毫秒”]=> 字符串(10)“1515954053”} 预期返回的文档示例: UPDATE:删除发送到UTCDateTime对象的变量,如下所示: 作品(如上面所示,我在将来添加了一个记录)。问题是当我发送变量来指定我需要的时间戳时。

  • 安装程序 ruby 2.3.3p222(2016-11-21修订版56859)[i386-mingw32] 想要执行的动作/步骤 我想对一个元素执行轻敲(而不是单击) 同时使用selenium-webDrive版本 IRB 到目前为止还不错。但是当我试图执行选项卡操作时。失败了 我觉得我错过了一些小细节(我对appium不熟悉),我只是没有看到我在这里犯的错误。所以如果有人能给我指出正确的方向,那

  • null 配置: Firefox V47.0.1、V49.0.2、V51.0.1和V52.0b9(我尝试了这些不同的版本) Geckodriver 0.14 硒3.1.0 有人有避免使用夜间发布的解决方案吗? 对于信息,由于我的互联网政策,我只能访问stackoverflow和github,请不要建议我使用Chrome! 谢谢你的帮助!

  • 没有关于未关闭连接的报告。 按照@gus和@stephen C的建议,在

  • 问题内容: 我正在使用Selenium chromewebdriver 3.7自动化测试。每当我浏览该网站时,都会出现如下所示的证书选择弹出窗口 但是,我无法单击“确定”按钮。这些是我 尝试过的选择 我所有的尝试都失败了。如何在此弹出窗口上单击“确定”?这是最接近的解决方案,我发现这是不工作的链接 在这里Linkhere 问题答案: 我遇到了同样的问题,我能够通过使用机器人,为url 创建函数并将