如何使用 Android 应用程序访问 MySQL 数据库?
Posted
技术标签:
【中文标题】如何使用 Android 应用程序访问 MySQL 数据库?【英文标题】:How to access MySQL database with an Android application? 【发布时间】:2014-09-16 22:34:03 【问题描述】:我是 Struts 和 android 的新手。我们开发了一个 Struts 应用程序。现在,我们正在寻求在 Android 中开发一些具有相同功能的模块。因此,它需要数据库(mysql)交互。
如果有任何想法,我们将不胜感激。是否需要 php 或 Web 服务?
【问题讨论】:
我推荐你使用网络服务。 谢谢。我将使用网络服务 【参考方案1】:这需要网络服务,
您无法从您的应用程序访问您的 MySQLSQL/Oracle 数据库。只是因为所有这些数据库都部署在其他环境中,无法在移动环境中部署像 MySQL 这样庞大的数据库。
所以你需要使用网络服务来访问那些数据库(MySQL/Oracle)。
WebServices
: 只是一种调用一些服务器端脚本的机制,如PHP, ASP, JSP
等。
所有这些脚本都有用于访问 MySQL 数据库的 API。最后,此脚本将以JSON/XML
的形式将结果返回给您的应用程序。通过 HTTP 连接。
YourAPP
->它将执行一些与你的服务器对话的和平代码(调用网络服务-> getStudent()-)
Server
-> *它将执行类似getStudent()- "select * from student" -> 将数据打包成json/xml格式。 -> 作为对您的应用程序的响应返回。*
YourApp
-> callback(Student data) -> 会得到响应。
Web- Services tutorials
【讨论】:
【参考方案2】:请勿将 Android 设备直接连接到生产数据库。这不安全有两个原因。
这意味着您无法通过防火墙关闭您的数据库,而必须将其留在开放的互联网上。这增加了黑客直接攻击它的能力。
要连接到数据库,您需要登录信息。这意味着您必须将其放入应用程序中。这使得攻击者反编译和获取它变得微不足道。那时你已经把你的数据库交给了他们。解决这个问题的正确方法是在它们之间放置一个 web 服务,并且让 Android 应用程序只直接连接到 web 服务。那么只有在你自己的服务器上安全的webservice才需要知道密码。
【讨论】:
感谢 gabe 的准确回答。【参考方案3】:您应该使用网络服务来使用数据库中的数据。
为此,您可以了解 json 和 rest 是什么。您可以在 sv 端使用它们。并且有 Gson 在 android 客户端学习。它可以帮助您解析 json 数据。
google 上有很多关于它的教程。
android-webservice-example
accessing-web-service-from-android.html
【讨论】:
感谢您的建议。【参考方案4】:如果你的数据库比较小,可以在手机上使用sqllite,将数据库存储在手机上。
如果你想保持在线,请关注:
在您的 android 项目中,您必须创建一个异步任务以将 http 请求发送到负责该语句的 Web 脚本。
这和发送一个html表单一样,你通过get或post发送数据,你在php中以同样的方式接收它们,连接到sql,查询你的数据库,返回你的结果,然后你将它们返回到手机中json 或 xml 格式。
在手机中,您获取 xml 或 json 格式数据的结果并对其进行解析,然后随心所欲地处理它们。
您也可以通过这种方式更新/更改/插入/删除/...数据库。
SQLite 基础教程:(这是一个我认为可能对你有帮助的基础教程)http://www.vogella.com/tutorials/AndroidSQLite/article.html#todo_database
在线sql数据库教程: http://androidprogramz.blogspot.com/2012/07/connect-mysql-database-from-android.html (这也是一个基本教程,向您展示如何更新插入选择以及几乎所有内容。)
祝你好运:)
【讨论】:
以上是关于如何使用 Android 应用程序访问 MySQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
从本地服务器访问 android 应用程序中的 mysql 数据库期间出现 java.io.FileNotFoundException
React Native,Android Studio,JDBC,MySql - 拒绝访问用户'root'@'ipaddress'
当我从android访问Java servlet时mysql数据库没有更新