【问题标题】:MySQL connection using jdbc, android studioMySQL连接使用jdbc,android studio
【发布时间】:2018-08-19 12:31:04
【问题描述】:

我是 Android Studio 新手,希望您不要认为我的问题很愚蠢。我正在尝试在 android studio 的终端中编写一个小程序。当我尝试在我的终端中运行相同的程序时(不是android studio)它工作正常。我通过mysql JDBC driver to the android studio在android studio lib中添加了MySQL-connector.jar文件。但它没有用。请帮助我。提前致谢。

  //MySQConnectionExample.java
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.SQLException;
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import java.util.Properties;

  public class MySQLConnectionExample {
      public static void main(String[] args) {

            Connection conn1 = null;
            String result = " ";

            try {
                 Class.forName("com.mysql.jdbc.Driver");
                 String url1 = "jdbc:mysql://127.0.0.1:3306/demo";
                 String user = "root";
                 String password = "mypassword";

                 conn1 = DriverManager.getConnection(url1, user, password);
           if (conn1 != null) {
               System.out.println("Connected to the database test1");
           }
           String sql = " select address from pharmacy";
           PreparedStatement prest = conn1.prepareStatement(sql);
           ResultSet rs = prest.executeQuery();
            while(rs.next()) {
               result = rs.getString(1);
               System.out.println(result);

            }

        } catch (SQLException ex) {
        System.out.println("An error occurred. Maybe user/password is invalid");
        ex.printStackTrace();
    }  catch (ClassNotFoundException e) {
                e.printStackTrace();
    }
  }
}

//执行后出错

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at MySQLConnectionExample.main(MySQLConnectionExample.java:16)

当我从程序中删除 "Class.forName("com.mysql.jdbc.Driver")" 时,这是我得到的错误

     An error occurred. Maybe user/password is invalid                         
    java.sql.SQLException: No suitable driver found for 
    jdbc:mysql://127.0.0.1:3306/demo
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at MySQLConnectionExample.main(MySQLConnectionExample.java:22)

【问题讨论】:

标签: android mysql jdbc


【解决方案1】:

我假设您正尝试从您的 Android 设备直接连接到 MySQL 数据库。但首先,您有一个ClassNotFound 异常,这意味着您还没有导入该库。

当你让驱动程序工作时,这部分还有更多问题:

....
try {
     Class.forName("com.mysql.jdbc.Driver");
     String url1 = "jdbc:mysql://127.0.0.1:3306/demo";
     String user = "root";
     String password = "mypassword";

     conn1 = DriverManager.getConnection(url1, user, password);
....

通过在您的 Android 设备上指定 127.0.0.1,您正在尝试连接到您设备上的 MySQL 服务器。现在我不知道您是否可以在 Android 上安装 MySQL,但您可能想在您的计算机上安装 MySQL 服务器。不用说,您必须使用该计算机的 IP 并在您的计算机上打开 MySQL 端口 (3306)。

所以,你可能想看到类似

....
try {
     Class.forName("com.mysql.jdbc.Driver");
     String url1 = "jdbc:mysql://192.168.1.10:3306/demo";
     String user = "root";
     String password = "mypassword";

     conn1 = DriverManager.getConnection(url1, user, password);
....

这假设您的 MySQL 服务器已安装并配置在 IP 地址为 192.168.1.10 的计算机上

祝你好运。

编辑:不过,我不能真正推荐这种方法用于生产应用程序,因为我担心可以反编译您的代码的黑客可以用它做什么。

【讨论】:

  • 是的,我正在尝试直接连接 MySQL。我使用这种方法只是为了了解如何使用 JDBC 将 MySQL 连接到 android。我绝对不会在我的应用程序中使用这种方法。
  • 我尝试添加“192.168.1.10”,但仍然出现同样的错误
  • 好吧,您仍然有需要解决的 ClassNotFound 异常。您检查过您的 JDBC 驱动程序的 Java 版本是否与您的 Android Studio 相同?
  • 是的,我仍然有那个 ClassNotFound 异常。如何检查 JDBC 驱动程序的 Java 版本?我的 android studio 版本是 3.0.1
【解决方案2】:

您无法从 Android 设备直接连接到数据库。构建连接到数据库的 API。然后将您的 Android 应用程序连接到这些 API。

检查此答案是否有相同的问题https://stackoverflow.com/a/12233178/4442067

【讨论】:

    猜你喜欢
    • 2019-01-18
    • 2023-03-11
    • 2017-10-08
    • 2016-12-29
    • 2012-08-27
    • 2012-04-15
    • 2015-07-17
    • 1970-01-01
    相关资源
    最近更新 更多