用于Android的窗口azure移动服务根据不同的值获取多个记录

时间:2013-03-19 15:34:25

标签: android azure-storage azure-table-storage azure-mobile-services

我正在使用window azure移动服务在我的Android应用程序中创建数据库。 我已经给第三方库访问了表中的所有细节。但是这些库没有像数据库的sql语言那样的方法,因此我必须为此进行非常复杂的查询。 我遇到了一个问题,我必须根据所选列的不同值获取多个记录,例如有一个名为“id”的列,我必须获取id 1,3,7和10的记录。 有没有人有这个第三方图书馆的经验。 如果有人有一些熟悉的经验,请指导我。

提前致谢。

2 个答案:

答案 0 :(得分:4)

适用于Azure移动服务的Android SDK具有一种查询语言,您可以在其中进行类似sql的查询。对于您的具体示例,您可以按照以下方式进行操作。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    try {
        mClient = new MobileServiceClient(
                  "https://YOUR_AZURE_MOBILE_SERVICE.azure-mobile.net/",
                  "YOUR_APPLICATION_KEY",
                  this
            );
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Button btn = (Button)findViewById(R.id.button1);
    final TextView tv = (TextView)findViewById(R.id.textView1);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            MobileServiceTable<Person> table = mClient.getTable("Test", Person.class);
            table.where(
                field("id").eq(1)
                .or(field("id").eq(3))
                .or(field("id").eq(7))
                .execute(new TableQueryCallback<Person>() {

                @Override
                public void onCompleted(List<Person> result, int count,
                        Exception exception, ServiceFilterResponse response) {

                    if (exception != null) {
                        tv.setText(exception.toString());
                    } else {
                        StringBuffer sb = new StringBuffer();
                        for (Person p : result) {
                            sb.append("P[name=");
                            sb.append(p.name);
                            sb.append(",age=");
                            sb.append(p.age);
                            sb.append("],");
                        }

                        tv.setText(sb.toString());
                    }
                }
            });
        }

    });
}

AFAIK文档仍在发布,但您可以在https://github.com/WindowsAzure/azure-mobile-services/blob/master/sdk/android/test/sdk.testapp.tests/src/com/microsoft/windowsazure/mobileservices/sdk/testapp/test/MobileServiceQueryTests.java查看一些示例。

答案 1 :(得分:0)

有几种方法可以在Android和WIndows Azure之间进行通信。您可以这样做,无论是使用WCF(Windows通信基础)并将服务的URL传递给您的Android,或者您可以开始使用Windows Azure移动服务,您可以在其中开始工作,无论是在移动服务(动态数据模式)还是使用Node JS将其链接到Windows Azure上的存储帐户。

以下是从WCF开始的链接:http://msdn.microsoft.com/en-us/library/ms734712.aspx

以下是使用Windows Azure移动服务开始的链接:http://www.windowsazure.com/en-us/develop/mobile/

这是从Node JS http://www.windowsazure.com/en-us/documentation/#

开始的链接