在Android中使用JDBC MySQL连接数据库?
Posted
技术标签:
【中文标题】在Android中使用JDBC MySQL连接数据库?【英文标题】:Using JDBC MySQL to connect database in Android? 【发布时间】: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 访问它。 does-android-support-jdbc 192.168.1.xxx 不是公共 IP 地址,因此您无法从 Internet 连接到它。 【参考方案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 ***,我可以从我的浏览器连接数据库,但为什么我不能通过 Android Studio 做到。 是的,我只连接一个IP地址。 我的意思是...你的手机在mysql服务器的同一个网络上? 哦,我想可能是我的问题,我使用的是模拟器手机,它使用的是 3G 而不是 Wifi 我可以在我的模拟器手机上做什么?以上是关于在Android中使用JDBC MySQL连接数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Mysql JDBC 驱动程序将 Android 与 MySQL 连接 [重复]