android连接mysql数据库必须要在同一网络下?

在同一个wifi网络之外也可以访问,只要MySQL有公网IP即可。

基于android的手机图书借阅系统的开发,如何用手机端连接pc端作为服务器的数据库,并且获取和修改数据库

哈哈,你说得对,这件事确实很复杂,不是三言两语能够说清楚的。
上周一位同事问我这个问题,当时我就剪了头发。

想象一下使用该应用程序在您的 Android 手机上下订单。
您输入书本编号,然后单击以下订单。
移动应用程序不会直接将信息发送到服务器并终止。

1 .在移动应用端,它会将书号打包成 HTTP 请求,例如 GET 请求“http://服务器地址/book?id=1 2 3 ”或将书号放在请求正文中的 POST 请求。
该请求使用HTTP协议,这是浏览器访问网页所使用的协议。

2 这个HTTP请求会经过Wi-Fi或者4 G/5 G网络,经过一堆路由器,最终到达你的服务器。
这个过程也可以通过CDN或反向代理,但暂时忽略它。

3 到达服务器后,您的 Web 服务器(如 Tomcat、Nginx)将收到此 HTTP 请求。
Tomcat可以先检查是否已经发送给自己的Servlet。

4 然后 Servlet 接管。
很高兴看到请求中的 ISBN 是 1 2 3 Servlet 本身不会直接检查数据库。

5 然后servlet 将处理数据库。
它将调用 JDBC。
例如,它使用 Connection conn = DriverManager.getConnection(url, user, pass);连接到数据库(此密码和用户名不应随机输入,应从配置中读取)。

6 连接后,Servlet 将创建一条语句或准备好的语句。
如果数据改变了,他可以写一条SQL语句比如UPDATE books SET Price=3 0 WHERE id=1 2 3 ;然后运行它。
如果是搜索数据,他就写SELECT FROM books WHERE id=1 2 3 ;执行后得到ResultSet结果集。

7 执行JDBC操作后,结果可能是“请求成功,这本书的价格是3 0元”,或者“更新成功”。
servlet 将此结果处理为 JSON 或 XML 字符串,例如 {"success": true, "bookPrice": 3 0}。

8 最后,Servlet 使用 HTTP 响应将处理后的字符串发送回移动应用程序。
移动应用程序收到此响应,然后应用程序中的人会看到提示“订单完成成功”或“这本书是3 0元”。

你看,中间连接那么多:网络传输、服务器处理、JDBC驱动加载、数据库执行……任何一步都可能出现问题。
比如网络不通,服务器挂了,SQL写错了,数据库堵了……哈哈,反正你能搞清楚,如果你想彻底理解这个东西,你会学到很多东西。

Android客户端怎么与服务器数据库连接?

我以前也遇到过这种情况。
上周一位客户问我为什么他创建的Android客户端无法直接连接数据库。
我一听,这不就是一个无法直接访问服务器数据库,必须通过中间服务器程序间接操作的典型例子吗?
想一想,数据库如此之大,往往有几GB,直接在客户端运行不仅消耗内存,还会导致应用程序崩溃。
因此,服务器程序通常是在服务器上执行的。
这个程序就像一座桥梁,接收客户端的指令,然后操作数据库中的数据。

就像用手机微信聊天一样。
事实上,你并不是直接连接对方的手机,而是通过腾讯的服务器传输信息。
在客户端,应该使用 HttpClient 类来发送 HTTP 请求。
不过需要注意的是,从Android 4 .0开始,网络请求不能在主线程中执行,否则应用程序会挂起,所以必须单独开一个子线程。

说到权限,Android的系统设置是相当严格的。
默认情况下,不允许应用程序利用其他应用程序、系统或私人用户数据。
安装应用程序时,系统会检查应用程序的权限要求,然后要求用户确认权限。

例如,如果您下载Android应用程序,它可能会请求读取联系人信息、发送短信、修改SD卡内容、访问网络等权限,这些都是用户在使用前应该清楚了解的事情。

总之,这件事还是有点复杂。
这就需要客户端和服务器端协同工作并特别注意权限管理。
无论哪种方式,都取决于你。
如果您有具体问题,我一直在思考它们。