首页 > 解决方案 > 如何将 android 应用程序连接到托管在 myasp.net 服务器上的 Mysql 数据库?

问题描述

我想为我创建的 asp.net 网站创建一个移动应用程序。如何将移动应用程序连接到 SQL Server?PHP脚本是将移动应用程序链接到数据库的唯一方法吗?

标签: phpandroidasp.net

解决方案


您不会将 Android 连接到服务器上的表。虽然有许多适用于 Android 的“类似”ODBC 驱动器?在这种情况下,适用于 Android 的 jdbc 驱动程序?这样的驱动程序仍然需要您在网站上安装 + 设置某种 Web 服务。基本原因很多,但有些是:

像 ODBC 等这样的实时主动常量技术是不实用的,因为基于 Web 的(以及大多数 Android 软件)是基于 Web 方法的。

这意味着技术堆栈必须处理断开连接——即使是小的断开连接也是意料之中的。这意味着您无法维护与数据库的套接字连接。因此,您不能也不能期望并保持与托管数据库的实时连接。因此,您使用 Web 服务调用,因为就像网页一样,它们不关心连接是否会中断。(您假设作为开发人员,您为每个请求重新连接 - 就像您在请求网页时所做的那样)。因此,与 Web 服务器上的某些网络资源(如文件夹)的实时保持连接,或者在这种情况下不使用某些数据库服务器。

下一个?好吧,几年前,我决定向狂野而疯狂的互联网开放 SQL Server 的端口。因此,我可以从移动设备直接连接到数据库。(因此绕过网站)。这是在 2004 年(16 年前)。在不到 20 分钟的时间里,我开始看到“机器人”试图登录到 sql server。我看见:

logon: "sa", Password:"sa"
logon: "sa", Password:"password"
logon: "sa", Password:"12345678"

等等!!!!那是在仅仅 20 分钟之后,回到 2004 年!你现在能想象这个吗?漫游机器人的数量增加了 100 倍,它们希望抓取并连接到您的 sql 服务器,并窃取您的数据。

那么,打开一个数据库来将外部连接指向真正令人讨厌和狂野的互联网?它根本没有完成 - 太冒险了。

您可以购买一本书并连接到 amazon.com 网站。但是,您不能做的是绕过 Web 服务器并连接到驱动亚马逊网站的数据库。因此,该数据库允许与外部世界的零外部连接。因此,他们的网站可以直接连接到数据库,但不能直接连接到外部,也不能连接到您,或者在这种情况下是您的手机。

那么,在几乎所有情况下?该网站确实拥有与数据库交互的权利和能力。那么,有一个安全的设置?您构建了一个 Web 服务并公开它!这样,您就永远不会将数据库暴露给直接连接。

那么,少数有进取心的人做了什么?好吧,他们构建了一个在 Android 上运行的 jdBC 驱动程序,它与一个类似于 sql 的驱动程序的 Web 服务交互。最终结果是开发人员体验“类似于”直接连接。这些 Web 服务“驱动程序”中有很多是用 PHP 编写的,但它们并非必须如此。我怀疑存在一些用 .net 编写的 jdbc“Web 服务”。因此,您绝不限于 PHP。

那么,今天呢?您会发现大多数网络托管服务提供商不允许外部数据库连接。我知道我的一个人几年前就停止支持这一点(太危险了——太多的数据泄露)。

Azure(来自 Microsoft - 云操作系统)仍然允许直接连接到数据库(因此绕过网站)。但是,此设置也往往受到 IP 地址的限制。(所以再一次,狂野西部和任何旧 IP 地址都无法连接。比如说,只能使用您的固定工作位置 IP)。

这实际上归结为您的 Android 需要与您计划使用的网站背后的数据库进行多少交互。一些 Web 服务调用,例如 getorders、更新订单或任何你需要的东西。

在 asp.net 中连接一些 Web 服务调用真的是一个梦想。(您只需将子/函数标记为公共,并使用编译器指令将其设置为。所以,这很容易做到。然后您从 Android 进行 Web 服务调用。因此,在大多数情况下,编写这样的 Andriod 应用程序必须进行交互无论如何与网站 - 然后最好使用它来获取(或发送)数据到/从数据库。

所以这里使用了 Web 服务调用 - 主要原因是 Web 技术可以处理断开连接,往往是无状态的,并且您通常不希望公开与数据库的直接连接。与数据库的直接连接也意味着现在数据库必须处理安全、登录和用户权限,而不是非常设计用于处理登录等的 Web 服务器。

基于 Web 的安全性更加坚固,因此您可以获得所有 Web 服务器都内置的安全级别。

因此,您无需连接到数据库。您与 Web 服务交互,Android 开发平台针对进行 Web 服务调用进行了优化,任何 Android 开发系统都将具有丰富的与 Web 服务交互的能力,而不是 ADO.net 或 ODBC 的桌面开发与数据库的直接连接很常见。

这种与数据库的直接连接在 Andriod 中并不常见。我们看到的唯一很好的支持是对本地 android 数据库和 sqlite 数据库(因此直接连接概念对于本地数据库来说是有效的——即使这样,您也经常会为此使用某种形式的 jdbc 堆栈。该代码和堆栈通常也可以使用 jdbc 公开的 Web 服务 - 如前所述,它通常是一个 PHP 包。这样的堆栈可能很好,因为您因此可以编写类似于桌面软件的代码,但是您正在使用另一个 Web 服务结尾。

对于大多数应用程序?一些网络方法应该足以将数据来回获取到您的 android 设备。


推荐阅读