繁体   English   中英

在Android中使用JDBC MySQL连接数据库?

[英]Using JDBC MySQL to connect database in Android?

我创建了一个 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);
    }

}

通常 MySql 安装有安全限制,因此只能从本地主机访问它。

需要执行类似下面的命令,允许其他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 并检查从 Internet 上看到的本地网络的 ip。 否则,您可以使用无线连接到本地网络的电话访问本地网络。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM