如何从 Azure DB Table 获取数据到 Android 应用程序?
How to Get data from Azure DB Table to an Android app?
我是 azure 的新手,我不知道如何连接到我在 Azure 数据库上创建的 Table。我想获取 table 数据 (SELECT *) 并将它们填充到 android 中的 GridView 中。我知道 'populating' 部分使用适配器,我只想知道如何连接和接收来自 Table 的数据 :)
我试过 THIS Microsoft 的教程,但是,在将相同的教程应用到我的场景时我遇到了一些困难。
这是我尝试过的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
try {
mClient = new MobileServiceClient(
"LINK",
"KEY",
this);
} catch (MalformedURLException e) {
}
refreshItemsFromTable();
}
private void refreshItemsFromTable()
{
//ActivityData is my Entity class
new AsyncTask<Void, Void, Void>() {
//
@Override
protected Void doInBackground(Void... params) {
try {
//This is the problematic area. My actual table's name is "Activity" on the Azure SQL
final MobileServiceList<ActivityData> result = mToDoTable.eq(false).execute().get();
runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.clear();
for (ActivityData item : result) {
mAdapter.add(item);
}
}
});
} catch (Exception exception) {
Toast.makeText(HomeScreen.this, exception.toString(),Toast.LENGTH_LONG);
}
return null;
}
}.execute();
}
如何在这种情况下指定 SQL SELECT 查询?看起来这段代码不是这样做的方法?我想用 table 数据填充 GridView :)
将数据从 Azure Table 存储获取到 android 的最可靠方法是通过 REST API。它相对简单,您可以完全控制。
例如,要获取(查询)数据,您可以检查以下示例请求:
Request Syntax:
GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince HTTP/1.1
Request Headers:
x-ms-version: 2013-08-15
x-ms-date: Mon, 25 Nov 2013 15:25:14 GMT
Authorization: SharedKeyLite myaccount:<some key>
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
更多相关信息:
- https://msdn.microsoft.com/en-us/library/azure/dd179421.aspx
- https://msdn.microsoft.com/en-us/library/azure/dd179423.aspx
请注意,Azure 表不支持 SQL 语言。 Azure Tables 是完全不同类型的存储(所谓的 no-sql)。
我是 azure 的新手,我不知道如何连接到我在 Azure 数据库上创建的 Table。我想获取 table 数据 (SELECT *) 并将它们填充到 android 中的 GridView 中。我知道 'populating' 部分使用适配器,我只想知道如何连接和接收来自 Table 的数据 :)
我试过 THIS Microsoft 的教程,但是,在将相同的教程应用到我的场景时我遇到了一些困难。
这是我尝试过的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
try {
mClient = new MobileServiceClient(
"LINK",
"KEY",
this);
} catch (MalformedURLException e) {
}
refreshItemsFromTable();
}
private void refreshItemsFromTable()
{
//ActivityData is my Entity class
new AsyncTask<Void, Void, Void>() {
//
@Override
protected Void doInBackground(Void... params) {
try {
//This is the problematic area. My actual table's name is "Activity" on the Azure SQL
final MobileServiceList<ActivityData> result = mToDoTable.eq(false).execute().get();
runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.clear();
for (ActivityData item : result) {
mAdapter.add(item);
}
}
});
} catch (Exception exception) {
Toast.makeText(HomeScreen.this, exception.toString(),Toast.LENGTH_LONG);
}
return null;
}
}.execute();
}
如何在这种情况下指定 SQL SELECT 查询?看起来这段代码不是这样做的方法?我想用 table 数据填充 GridView :)
将数据从 Azure Table 存储获取到 android 的最可靠方法是通过 REST API。它相对简单,您可以完全控制。
例如,要获取(查询)数据,您可以检查以下示例请求:
Request Syntax:
GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince HTTP/1.1
Request Headers:
x-ms-version: 2013-08-15
x-ms-date: Mon, 25 Nov 2013 15:25:14 GMT
Authorization: SharedKeyLite myaccount:<some key>
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
更多相关信息:
- https://msdn.microsoft.com/en-us/library/azure/dd179421.aspx
- https://msdn.microsoft.com/en-us/library/azure/dd179423.aspx
请注意,Azure 表不支持 SQL 语言。 Azure Tables 是完全不同类型的存储(所谓的 no-sql)。