Android:从MySQL数据库获取数据

时间:2015-10-24 08:59:58

标签: java android mysql json database

我已经观看了超过5个小时的YouTube教程,但我根本就没有得到如何使这项工作。总有一些我不理解或与我不相干的东西。

我想从数据库获取数据并将其带到我的Android。我已经读过这可能适用于JSON。

以下是我的JSON数据库导出的链接。这是对的吗?

http://web2page.ch/apps/FruityNumber/recordShow2.php

我使用的API: compileSdkVersion 23

我希望你能一步一步地帮助我。我正在寻找最简单的方法。

3 个答案:

答案 0 :(得分:1)

有几种方法可以执行此操作。您可以对服务器执行Http请求并获取结果,将它们手动解析为java对象。或者使用像Gson这样的库,它可以节省您手动解析的工作并将JSON字符串序列化为java对象。

但我建议使用Retrofit一个Http客户端,它可以让你轻松下载JSON数据并将其解析为POJO(Plain Old Java Object)。 Retrofit为此目的使用了转换器,如Gson,Jackson,Moshi等。

使用Retrofit非常简单,

  1. 定义接口(同步或异步)并定义API端点
  2. 使用基本网址
  3. 构建Retrofit对象
  4. 如果执行同步请求,则改造将为您的界面生成一个实现,您必须确保在后台线程中发出请求
  5. 如果执行异步请求,您将需要注册一个回复,通过该回叫您将获得响应
  6. 最后是您的回复的POJO课程,

    public class Item {
        public String id;
        public String user;
        public String highscore;
    }
    

    Here是有关如何使用Retrofit的完整指南。

答案 1 :(得分:1)

使用像GSON这样的库将JSON转换为Java对象会更容易。

它的工作方式是创建一个模型类,例如:

import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

@Generated("org.jsonschema2pojo")
public class Result{

@SerializedName("id")
@Expose
private String id;
@SerializedName("user")
@Expose
private String user;
@SerializedName("highscore")
@Expose
private String highscore;

/**
* 
* @return
* The id
*/
public String getId() {
return id;
}

/**
* 
* @param id
* The id
*/
public void setId(String id) {
this.id = id;
}

/**
* 
* @return
* The user
*/
public String getUser() {
return user;
}

/**
* 
* @param user
* The user
*/
public void setUser(String user) {
this.user = user;
}

/**
* 
* @return
* The highscore
*/
public String getHighscore() {
return highscore;
}

/**
* 
* @param highscore
* The highscore
*/
public void setHighscore(String highscore) {
this.highscore = highscore;
}

}

这很容易:

Gson gson = new Gson();
List<Result> results = gson.fromJson(json, new TypeToken<List<Result>>(){}.getType());

示例:

for(Result res : results){
  Log.d(LOG_TAG, "id = " + res.getId());
}

答案 2 :(得分:0)

  

有很多方法可以完成工作。但是我的工作很简单。

  1. 首先通过发出HTTP请求将所有json数据从服务器端带到客户端(意味着应用程序端)。你可以使用android首选的HttpUrlConnection类。你可以在这里访问。
  2. http://syntx.io/how-to-send-an-http-request-from-android-using-httpurlconnection/

    1. 一旦您将数据带到了应用端。您必须使用JSONObject和JSONArray类来解析该json格式数据。为此您必须创建一个模型类。为此,您可以访问
    2. http://androidexample.com/JSON_Parsing_-_Android_Example/index.php?view=article_discription&aid=71&aaid=95

      我认为你应该改变你的json格式:

      {
          "Results": [
              {
                  "id": "1",
                  "user": "ero",
                  "highscore": "13 Sek"
              },
              {
                  "id": "2",
                  "user": "rick",
                  "highscore": "21 Sek"
              },
              {
                  "id": "3",
                  "user": "rick",
                  "highscore": "21 Sek"
              },
              {
                  "id": "4",
                  "user": "rick",
                  "highscore": "21 Sek"
              },
              {
                  "id": "5",
                  "user": "rick",
                  "highscore": "21 Sek"
              },
              {
                  "id": "6",
                  "user": "rick",
                  "highscore": "21 Sek"
              },
              {
                  "id": "7",
                  "user": "rick",
                  "highscore": "21 Sek"
              },
              {
                  "id": "8",
                  "user": "rick",
                  "highscore": "21 Sek"
              },
              {
                  "id": "9",
                  "user": "",
                  "highscore": ""
              },
              {
                  "id": "10",
                  "user": "Stefano",
                  "highscore": "alle"
              },
              {
                  "id": "11",
                  "user": "Test001",
                  "highscore": "Test001"
              },
              {
                  "id": "12",
                  "user": "",
                  "highscore": ""
              },
              {
                  "id": "13",
                  "user": "Stefano",
                  "highscore": "5sek"
              },
              {
                  "id": "14",
                  "user": "sven",
                  "highscore": "1"
              },
              {
                  "id": "15",
                  "user": "sven",
                  "highscore": "1"
              },
              {
                  "id": "16",
                  "user": "sven",
                  "highscore": "1"
              },
              {
                  "id": "17",
                  "user": "",
                  "highscore": ""
              },
              {
                  "id": "18",
                  "user": "kiala",
                  "highscore": ""
              },
              {
                  "id": "19",
                  "user": "kiala",
                  "highscore": "angola"
              },
              {
                  "id": "20",
                  "user": "kiala",
                  "highscore": ""
              }
          ]
      }
      

      它看起来非常相关且易于解析。要更改json格式,可以在php文件中编码。

      $sql = mysqli_query("SELECT ...");
      $resluts = array();
      while($row = mysqli_fetch_assoc($sql)) {
          $tmp = array();
          $tmp["id"] = $row["id"];
          $tmp["user"] = $row["user"];
          $tmp["highscore"] = $row["highscore"];
          array_push($results["Results"], $tmp);
      }
      echo json_encode($results);