[英]Unable to connect android App using JDBC to MYSQL database using XAMPP
[英]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.