54
Android 3.3 API 18

你好,

我正在使用 android 开发我的第一个应用程序。该应用程序必须连接到在线数据库来存储用户数据。

我正在寻找包含 MySQL 数据库的云存储。但是,我的应用程序可以直接连接到这个 MySQL 数据库并从中推送和拉取数据吗?或者还有其他我需要做的事情吗?

非常感谢您的任何建议,

4

8 回答 8

82

是的,你可以这么做。

您需要的材料:

  1. 网络服务器
  2. 存储在网络服务器中的数据库
  3. 还有一点安卓知识:)
  4. Webservices (json ,Xml...etc) 无论你喜欢什么

1.首先在你的manifest文件中设置internet权限

 <uses-permission android:name="android.permission.INTERNET" />

2.创建一个类以从服务器发出HTTPRequest(我正在使用json parisng来获取值)

例如:

    public class JSONfunctions {

    public static JSONObject getJSONfromURL(String url) {
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;

        // Download JSON data from URL
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection " + e.toString());
        }

        // Convert response to string
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }

        try {

            jArray = new JSONObject(result);
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }

        return jArray;
    }
}

3.在您的MainActivityMake 类的对象中JsonFunctions并将 url 作为参数从您想要获取数据的位置传递

例如:

JSONObject jsonobject;

jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");

4.然后最后读取 jsontags 并将值存储在 arraylist 中,如果需要,稍后在 listview 中显示

如果你有任何问题,你可以关注这个博客,他提供了优秀的安卓教程AndroidHive

由于我写的上述答案很久以前,现在,HttpClient已在 Api 23 中删除。您可以使用 build.gradle(app-level) 中的以下代码继续在您的项目中使用。HttpPostHttpEntityorg.apache.http

android {
    useLibrary 'org.apache.http.legacy'
    signingConfigs {}
    buildTypes {}
}

或者您可以使用HttpURLConnection如下方式从服务器获取响应

public String getJSON(String url, int timeout) {
HttpURLConnection c = null;
try {
    URL u = new URL(url);
    c = (HttpURLConnection) u.openConnection();
    c.setRequestMethod("GET");
    c.setRequestProperty("Content-length", "0");
    c.setUseCaches(false);
    c.setAllowUserInteraction(false);
    c.setConnectTimeout(timeout);
    c.setReadTimeout(timeout);
    c.connect();
    int status = c.getResponseCode();

    switch (status) {
        case 200:
        case 201:
            BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line+"\n");
            }
            br.close();
            return sb.toString();
    }

} catch (MalformedURLException ex) {
    Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
    Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
   if (c != null) {
      try {
          c.disconnect();
      } catch (Exception ex) {
         Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
      }
   }
}
return null;

}

或者您可以使用 3rd 方库VolleyRetrofit调用 webservice api 并获取响应,然后使用FasterXML-jackson,来解析它google-gson

于 2013-10-07T06:46:47.737 回答
11

你想做的是一个坏主意。它会要求您在应用程序中嵌入您的用户名和密码。这是一个非常糟糕的主意,因为可能会对您的 APK 进行逆向工程,并获取此公开的 mysql 服务器的用户名和密码,该服务器可能包含敏感的用户数据。

我建议制作一个 Web 服务来充当 mysql 服务器的代理。我假设用户需要登录,因此您可以使用他们的用户名/密码对 Web 服务进行身份验证。

于 2013-10-07T05:59:34.547 回答
8

您可以使用 PHP、JSP、ASP 或任何其他服务器端脚本来连接 mysql 数据库并返回 JSON 数据,您可以在您的 android 应用程序中将其解析为这个链接如何做

于 2013-10-07T05:55:57.950 回答
5

第 1 步:在您的服务器上创建 Web 服务

第 2 步:让您的应用程序调用 Web 服务并接收结果集

于 2013-10-07T05:57:41.713 回答
4

是的,您绝对可以连接到 MySql 在线数据库,因为您需要创建 Web 服务。此 Web 服务将为您提供对 MySql 数据库的访问权限。然后您可以轻松地将数据拉取和推送到 MySql 数据库。PHP 将是创建易于实现的 Web 服务的好选择。祝你好运...

于 2013-10-07T06:01:38.320 回答
4

您绝对可以制作这样的应用程序,您需要通过调用 php 脚本来与数据库建立 http 连接,该脚本将根据您的项目运行特定的查询,并以 xml 或 json 格式生成结果,可以显示在您的 android 应用程序上!有关如何将 android 应用程序连接到 mysql的完整教程,我建议查看此教程

于 2014-10-26T12:12:50.287 回答
2

看看这个在线后端。

Parse.com

它们提供推送通知、社交集成、数据存储以及使用 Cloud Code 将丰富的自定义逻辑添加到应用程序后端的能力。

于 2013-10-07T06:05:48.733 回答
2

这实际上很容易。但是没有办法直接实现它。您需要选择服务端技术。这部分你可以使用任何东西。这就是我们所说的 RESTful API 或 SOAP API。这取决于你选择什么。我已经做了很多项目。我更喜欢 REST。那么会发生什么,您的 Web 服务器中将有一些脚本,并且您知道 URL。例如,我们需要进行用户注册。为此我们有

mydomain.com/v1/userregister.php

现在从 android 端,您将向上述 URL 发送 HTTP 请求。上面的 URL 将处理用户注册,并给你一个操作是否成功的响应。

有关上述概念的完整详细说明。您可以访问以下链接。

**执行 CRUD 操作的 Android MySQL 教程**

于 2017-09-19T12:57:52.217 回答