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数据库访问。

谢谢。


JDBC不适用于Android?

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

恕我直言,JDBC专为高带宽,低延迟,高度可靠的网络连接(例如桌面到数据库服务器,Web应用服务器到数据库服务器)而设计。 移动设备很少提供这些功能,而且它们中的任何一项都不一致

如果是这样,告诉我我应该考虑什么替代方案来实现远程MySQL数据库访问。

围绕数据库创建一个Web服务,并从Android访问它。

作为副作用,您可以提高安全性(打开数据库),可以从客户端卸载一些业务逻辑,可以更好地支持其他平台(例如,基于Web或基于Web的移动框架)等。


出于某种原因,我遇到了麻烦。 在其他地方提到,只有3.017的驱动程序工作,并且由于我提出了详细的指示,我想我会分享它们。 (我最初的目的是给出一些步骤来重现我可以用来在这里和其他地方提出问题的错误,不,我现在无法开始猜测为什么现在回头看这么麻烦)


要:在Android应用程序中获取JDBC驱动程序

  • 新的Android项目 - AndroidJDBCTest,Target Android4.03,最低sdk 8(Android 2.2),包名称“com.test.AndroidJDBCTest”
  • 右键点击项目,新建文件夹“libs”
  • 从这里下载Mysql JDBC Driver并将其解压到您的文件系统。
  • 在解压缩后浏览到根目录,并使用Eclipse的默认“复制”设置将jar mysql-connector-java-3.0.17-ga-bin.jar到项目资源管理器中项目的/ libs中。拖放。
  • 右键单击Eclipse项目,构建路径 - 配置构建路径,在库选项卡下添加JAR - 浏览到/ AndroidJDBCTest / libs和jar文件,然后单击确定
  • 注意:它现在显示在“Referenced Libraries”节点下(如果Eclipse设置为显示它)
  • 从这里添加代码到onCreate()的结尾 - 基本上是Class.forName("com.mysql.jdbc.Driver").newInstance();
  • 附加摩托罗拉Xoom家庭版等蜂窝设备并运行

  • 撇开有效的反对意见,你可以使它工作。

    首先,确保你在构建路径中有一个有效的驱动程序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条目中看到标题

    链接地址: http://www.djcxy.com/p/94251.html

    上一篇: Android JDBC not working: ClassNotFoundException on driver

    下一篇: Android: using JDBC?