我正在尝试使用azure移动服务从azure MS sql数据库获取一些数据。我编写的代码如下所示,但是当我调用该方法时,它返回null。我哪里做错了?我应该使用什么查询?
private void refreshNumsFromTable() {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
mPhonesTable.where().field("PhoneNumber").execute(new TableQueryCallback<PhoneNumbers>() {
@Override
public void onCompleted(final List<PhoneNumbers> result, int count,Exception exception, ServiceFilterResponse response)
{
runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.clear();
for(PhoneNumbers num : result)
{
mAdapter.add(num);
}
}
});
}
});
}
});
} catch (Exception e) {
createAndShowDialog(e, "Error");
}
return null;
}
}.execute();
}
答案 0 :(得分:1)
你在那里没有完整的谓词。通过使用where()
方法,您可以询问PhoneNumber符合某些条件的结果,但您没有指定该条件。你需要说它等于某个东西(eq()
)或它以某个字符串开头:
mPhonesTable.where().field("PhoneNumber").eq("555-555-5555").execute().get();
要么
mPhonesTable.where().startsWith("PhoneNumber", "555").execute().get();
如果您尝试仅返回PhoneNumber列,请使用select()
方法:
mToDoTable.select("PhoneNumber").execute().get();
有关详细信息,请参阅移动服务Android SDK参考: https://azure.microsoft.com/en-us/documentation/articles/mobile-services-android-how-to-use-client-library/#querying