为什么Android平台不欢迎"直接数据库连接"的范例?

lix*_*ang 3 database paradigms android

当我说"直接数据库连接"时,我的意思是使用类似JDBC的驱动程序在活动上下文中调用和运行远程数据库查询,就像使用SQLite数据库存储本地参数一样.

直到我意识到我几乎无法在互联网上找到关于这种数据库连接方式的任何教程或文档,我想,无论大多数(如果不是所有的)Android设备都有不稳定的Wi-Fi/3G网络,连接到数据库应该这样做.

即使在Android SDK中,android.database.sqlite本质上也只支持本地数据库访问(aka ).并且在java.sql API 的描述中声明,您必须提供自己的JDBC驱动程序才能使用此API.

然后我开始意识到,如果我直接连接数据库的意图在Android领域首先是错误的.

我读过很多书,维基和论坛,包括Stack Overflow上提供的大量答案.在我看来,许多人都专注于完成某项工作,而且过去的讨论始于"如何为我的Android设备设计RESTful Web服务?".但是,我需要彻底了解!我还需要原始Android开发人员的权威引用.

Pet*_*ego 9

一些原因(但不是几乎所有原因):

  1. 不存在:Android上没有(支持的)JDBC驱动程序.

  2. 身份验证:您希望对公共网络上的用户进行身份验证:

    答:每个用户在与服务器通信时都必须拥有自己的凭据(以某种形式).在您的应用中添加一个用户名/通行证会遇到麻烦.

    B.您不希望数据库提供身份验证.为此,您需要一个单独的身份验证层.

  3. 标准协议:如果您想确保您的应用程序在所有网络上运行(特别是在锁定的公司网络上),您需要使用HTTP/HTTPS.它是唯一可以(几乎)无处不在的协议.

  4. 业务逻辑分离:如果您支持不同的设备平台(Android,iPhone等),那么在服务器上拥有所有业务逻辑是明智的.您应该在服务器上执行此操作,而不是调用JDBC然后在设备上执行业务逻辑.这样你就会顺从DRY(不要重复自己),而且单元测试会更容易.