【问题标题】:Using JDBC MySQL to connect database in Android?在Android中使用JDBC MySQL连接数据库?
【发布时间】:2016-05-13 08:23:48
【问题描述】:

我创建了一个 Android 应用程序来使用 MySQL 连接数据库。当我测试与 localhost 10.0.2.2:3306 的连接时,我可以获取数据库,但是当我使用真实主机从我的服务器获取数据库时,我什么也得不到。我的主机是:https://192.168.1.xxx:xxxxx,我的数据库名称是 test。我的问题是什么?请帮我。谢谢你。 这是我的代码:

private class MyTask extends AsyncTask<Void, Void, Void> {

    private String idFromServer;
    private String url="jdbc:mysql://192.168.1.xxx:xxxxx/test";
    String name = "AAA";

    @Override
    protected Void doInBackground(Void... params) {
        try {
            ResultSet result = null;
            String a = "SELECT * FROM testtable";
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con = DriverManager.getConnection(url,"aaa","abcdef");
            Statement state = con.createStatement();
            result = state.executeQuery(a);
            while (result.next()) {
                if (name.equals(result.getString("name"))) {
                    idFromServer = result.getString("id");
                }
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }

    protected void onPostExecute(Void result) {
        id.setText(idFromServer);
        super.onPostExecute(result);
    }

}

【问题讨论】:

  • JDBC 专为高带宽、低延迟、高可靠的网络连接而设计(例如,桌面到数据库服务器、Web 应用程序服务器到数据库服务器)。移动设备提供的这些功能很少,而且没有一个始终如一。
  • 所以围绕您的数据库创建一个 Web 服务并从 Android 访问它。
  • 192.168.1.xxx 不是公共 IP 地址,因此您无法从 Internet 连接到它。

标签: java android mysql database jdbc


【解决方案1】:

MySql 通常安装有安全限制,因此只能从 localhost 访问它。

你需要执行类似下面的命令来允许其他ip访问

GRANT ALL PRIVILEGES
ON database.*
TO 'youruser'@'%'
IDENTIFIED BY 'yourpassword';

请注意,从任何 IP 提供对 MySql 的访问权限是一种不好的做法,因为它可能会被黑客入侵。因此,通常最好放置一个服务器来拦截来自您的 android 应用程序的请求并直接调用数据库。


注意:还要检查它是否打开了您的应用程序和 mysql 服务器之间的路由。

如果你使用3G你没有使用本地网络并且MySql服务器的IP与192.168.1.xxx不同(即本地网络的ip)。也有可能在本地网络之外,MySql Server 是不可见的。这取决于您的网络配置。

您需要“打开”您的网络,公开端口以访问 mysql,并检查从互联网上看到的本地网络的 ip。否则,您可以使用与本地网络无线连接的手机访问本地网络。

【讨论】:

  • 感谢您的回答。我已经使用 Tunnelblick open VPN,我可以从我的浏览器连接数据库,但为什么我不能通过 Android Studio 做到。
  • 是的,我只连接一个IP地址。
  • 我的意思是...你的手机在mysql服务器的同一个网络上?
  • 哦,我想可能是我的问题,我使用的是模拟器手机,它使用的是 3G 而不是 Wifi
  • 我可以在我的模拟器手机上做什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 2023-03-11
  • 2012-10-20
  • 2011-10-06
  • 1970-01-01
相关资源
最近更新 更多