Java - How to Retrieve and use a single value from azure mobile services in Android

情到浓时终转凉″ 提交于 2019-12-02 02:22:31

问题


I am new to azure but i know certain things like how to retrieve and store data to azure , i followed azure official documentation for this purpose.

Link is Here - https://azure.microsoft.com/en-in/documentation/articles/mobile-services-android-get-started-data/

But the problem is, this tutorial is only showing How to retrieve and use Data from azure using Adapters and Lists . I want to know , How can i retrieve a single value from azure mobile services and how to use it in android.

Plzz provide me both backend code (if there is any) and java code for this . THANKS in advance


回答1:


I got it solved. No need to create a custom API.

Just follow the basics , Here is the code :-

final String[] design = new String[1];

private MobileServiceTable<User> mUser;

mUser = mClient.getTable(User.class);

            new AsyncTask<Void, Void, Void>() {
                @Override
                protected Void doInBackground(Void... params) {
                    try {
                        final MobileServiceList<User> result =
                                mUser.where().field("name").eq(x).execute().get();
                        for (User item : result) {
                           // Log.i(TAG, "Read object with ID " + item.id);
                            desig[0] = item.getDesignation(); //getDesignation() is a function in User class ie- they are getters and setters
                            Log.v("FINALLY DESIGNATION IS", desig[0]);

                        }

                    } catch (Exception exception) {
                       exception.printStackTrace();
                    }
                    return null;
                }

                @Override
                protected void onPostExecute(Void aVoid) {
                    super.onPostExecute(aVoid);
                    designation.setText(desig[0]);
                }
            }.execute();

DON'T forget to create a class User for serialization and all. Also you should define the array .

FEEL FREE to write if you got it not working.

EDIT :-

design[0] is an array with size 1.

eq(x) is equal to x where , x variable contains username for which i want designation from database (azure).




回答2:


You can do this with a custom API. See this link: https://azure.microsoft.com/en-us/documentation/articles/mobile-services-how-to-use-server-scripts/#custom-api

Code looks like this:

exports.post = function(request, response) {
    response.send(200, "{ message: 'Hello, world!' }");
} 

It's then reachable at https://todolist.azure-mobile.net/api/APIFILENAME.

If you want to access a table you can do something like:

exports.post = function(request, response) {
    var userTable = tables.getTable('users');

    permissionsTable
        .where({ userId: user.userId})
        .read({ success: sendUser });
} 

function sendUser(results){
  if(results.length <= 0) {
    res.send(200, {});
  } else {
    res.send(200, {result: results[0]});
  }
}

You can then follow the instructions for using the API on your Android client here: https://azure.microsoft.com/en-us/documentation/articles/mobile-services-android-call-custom-api/

How your app is written will change how this code works/looks, but it looks something like:

ListenableFuture<MarkAllResult> result = mClient.invokeApi( "UsersAPI", MarkAllResult.class ); 

That invokes the API. You need to write the class and Future to handle the results. The above page explains this in great detail.




回答3:


The most optimal solution would be to create an api on your server which accepts an ID to return an single object/tablerow.

In your android app, you only have to call:

MobileServiceTable<YourClass> mYourTable;

mClient = new MobileServiceClient(
                        "https://yoursite.azurewebsites.net/",
                        mContext);
mYourTable = mClient.getTable(YourClass.class);
YourClass request = mYourTable.lookUp(someId).get(); 
// request -> https://yoursite.azurewebsites.net/tables/yourclass/someId

YourClass should have the same properties as the object on the server.



来源:https://stackoverflow.com/questions/31364134/java-how-to-retrieve-and-use-a-single-value-from-azure-mobile-services-in-andr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!