为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

牧羊人nacy 2019-07-31 10:23:28
Android JDBC无法正常工作:驱动程序上的ClassNotFoundException我正在尝试在我的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数据库访问的替代方案。谢谢。
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

暂且不谈有效的异议,你可以让它发挥作用。

首先确保你在构建路径中有一个有效的驱动程序jar,我用过

mysql-connector-java-5.1.7-bin.jar

其次,如果你在模拟器中尝试它并且你的数据库在你的开发机器上,那么'localhost'在URL中是不好的。你需要'10 .0.2.2'

我的网址是:

String url = "jdbc:mysql://10.0.2.2/test";

测试是我的数据库名称。

我有一张名为“书籍”的桌子,里面有一个“标题”栏目

以下代码适用于我:

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

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    try {
        conn = DriverManager.getConnection(CONNECTION_URL, user, pass);
    } catch (java.sql.SQLException e1) {
        e1.printStackTrace();
    }
    try {

        stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT title FROM books");
        String entry;
        while (rs.next()){
            entry = rs.getString(1);
        }
        rs.close();
        stmt.close();
        conn.close();
    } catch (java.sql.SQLException e) {
        e.printStackTrace();
    }}

单步执行调试器,我会在String条目中看到标题


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 575 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信