【问题标题】:Retrieve data from remote sqlserver to android app从远程 sqlserver 检索数据到 android 应用程序
【发布时间】:2016-01-27 14:11:09
【问题描述】:

我想在我的 android 应用程序中显示来自远程 sql-server 的数据。我正在使用网络服务。我可以连接和插入,但不能使用 JSON 显示。

这是来自网络服务的代码

 public DataTable RequestDetails(string request_name)
    {
        DataTable requestDetails = new DataTable();
        requestDetails.Columns.Add(new DataColumn("Request ID", typeof(String)));
        requestDetails.Columns.Add(new DataColumn("Date", typeof(String)));

        if(dbConnection.State.ToString() == "Closed")
        {
            dbConnection.Open();
        }

        string query = "select ID_Requests,request_date from Requests where request_by='" + request_name + "'";

        SqlCommand command = new SqlCommand(query, dbConnection);
        SqlDataReader reader = command.ExecuteReader();

        if (reader.HasRows)
        {
            while (reader.Read())
            {
                requestDetails.Rows.Add(reader["Request ID"], reader["Date"]);
            }
        }

        reader.Close();
        dbConnection.Close();
        return requestDetails;
    }

这是安卓代码:

 protected class AsyncLoadDeptDetails extends
        AsyncTask<DeptTable, JSONObject, ArrayList<DeptTable>> {
    ArrayList<DeptTable> deptTable = null;

    @Override
    protected ArrayList<DeptTable> doInBackground(DeptTable... params) {
        // TODO Auto-generated method stub

        RestAPI api = new RestAPI();
       try {

            JSONObject jsonObj = api.RequestDetails(params[1].getName());

            JSONParser parser = new JSONParser();

            deptTable = parser.parseDepartment(jsonObj);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            Log.d("AsyncLoadDeptDetails", e.getMessage());

        }

        return deptTable;
    }

    @Override
    protected void onPostExecute(ArrayList<DeptTable> result) {
        // TODO Auto-generated method stub

        for (int i = 0; i < result.size(); i++) {
            data.add(result.get(i).getNo() + " " + result.get(i).getName());
        }

        adapter.notifyDataSetChanged();

        Toast.makeText(context, "Loading Completed", Toast.LENGTH_SHORT).show();
    }

}

还有 JSONParser 代码:

public ArrayList<DeptTable> parseDepartment(JSONObject object)
{
    ArrayList<DeptTable> arrayList=new ArrayList<DeptTable>();
    try {
        JSONArray jsonArray=object.getJSONArray("Value");
        JSONObject jsonObj=null;
        for(int i=0;i<jsonArray.length();i++)
        {
            jsonObj=jsonArray.getJSONObject(i);
            arrayList.add(new DeptTable(jsonObj.getInt("Request ID"), jsonObj.getString("Date")));
        }

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        Log.d("JSONParser => parseDepartment", e.getMessage());
    }
    return arrayList;
}

【问题讨论】:

    标签: c# android json web-services


    【解决方案1】:

    我会使用 Fiddler 或类似的东西并查看返回的数据。我一直无法从服务返回 .NET 数据表,所以如果是我,我会在发送之前将数据表转换为 JSON。之前已经在几个帖子中讨论过这个问题,但这里有一个很好的答案: https://stackoverflow.com/a/17398078/3299157

    【讨论】:

      猜你喜欢
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多