ラベル SQL の投稿を表示しています。 すべての投稿を表示
ラベル SQL の投稿を表示しています。 すべての投稿を表示

2013年10月13日日曜日

Azure SQLのデータをListViewに表示させる


public class MainActivity extends Activity {

MobileServiceClient mClient;
MobileServiceTable<TokutenItem> mTokutenTable;
TokutenItemAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.benefit_list);
// 1)ListViewとadapterを設定、rowのlayoutも紐づく
mAdapter = new TokutenItemAdapter(this, R.layout.benifit_cell);
ListView listViewBenefit = (ListView) findViewById(R.id.benefitList);
listViewBenefit.setAdapter(mAdapter);

try {
// 2)Create the Mobile Service Client instance, using the provided
// Mobile Service URL and key
mClient = new MobileServiceClient(
        "https://xxxxxxx.azure-mobile.net/",
"keyforAzuraMobileService"
this);

// 3)Get the Mobile Service Table instance to use
mTokutenTable = mClient.getTable(TokutenItem.class);
} catch (MalformedURLException e) {
createAndShowDialog(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error");
}
// 4)SQL実行
mTokutenTable.where().field("venusId").eq("4e25173e091a817e3dd67300")
.execute(new TableQueryCallback<TokutenItem>() {
                          // 5)SQL完了したあとのcallbackでadapterを更新
public void onCompleted(List<TokutenItem> result, 
        int count,
                Exception exception, 
                ServiceFilterResponse response) {   
   if (exception == null) {
mAdapter.clear();
        for (TokutenItem item : result) {
mAdapter.add(item);
}

   } else {
        createAndShowDialog(exception, "Error");
  }
        }
});
}

Adapterの設計

public class TokutenItemAdapter extends ArrayAdapter<TokutenItem>{
/**
* Adapter context
*/
Context mContext;

/**
* Adapter View layout
*/
int mLayoutResourceId;

public TokutenItemAdapter(Context context, int layoutResourceId) {
super(context, layoutResourceId);

mContext = context;
mLayoutResourceId = layoutResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;

final TokutenItem currentItem = getItem(position);

if (row == null) {//再利用できるrowがあるかどうかをチェック、なければ新規作成
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
row = inflater.inflate(mLayoutResourceId, parent, false);
}

//rowのlayoutになにを表示させるかを設定
TextView pointTv = (TextView) row.findViewById(R.id.point);
TextView priceDownTv = (TextView) row.findViewById(R.id.priceDown);
pointTv.setText(Float.toString(currentItem.getPointUp()));
priceDownTv.setText(Integer.toString(currentItem.getPriceDown()));
return row;
}

}

2013年9月20日金曜日

AndroidにおけるAzureの使用、SQLにinsert

AndroidからAzureのSQLを使用には、簡単です。

1)Tableの構造と合うclassを用意します。

package com.example.azuretest;

public class TokutenItem {
@com.google.gson.annotations.SerializedName("id")
private int mId;
@com.google.gson.annotations.SerializedName("venusId")
private String mVenusId;

@com.google.gson.annotations.SerializedName("pointUp")
private  float mPointUp;
@com.google.gson.annotations.SerializedName("pricedown")
private int mPriceDown;
@com.google.gson.annotations.SerializedName("cardId")
private int mCardId;
public TokutenItem(String venusId, float pointUp, int priceDown, int cardId) {
//this.setId(id); idは自動的に付与され、set不可のようです
this.setVenusId(venusId);
this.setPointUp(pointUp);
this.setPriceDown(priceDown);
this.setCardId(cardId);
}
public int getId() {
return mId;
}
public String getVenusId() {
return mVenusId;
}
public float getPointUp() {
return mPointUp;
}
public int getPriceDown() {
return mPriceDown;
}
public int getCardId() {
return mCardId;
}
public final void setId(int id) {
mId = id;
}
public final void setVenusId(String venusId) {
mVenusId = venusId;
}
public final void setPointUp(float pointUp) {
mPointUp = pointUp;
}
public final void setPriceDown(int priceDown) {
mPriceDown = priceDown;
}
public final void setCardId(int cardId) {
mCardId = cardId;
}
}

2)MobileServiveClientの設定、そしてMobileServiceTableの設定

try {
// Create the Mobile Service Client instance, using the provided
// Mobile Service URL and key
mClient = new MobileServiceClient(
"https://xxxxxxx.azure-mobile.net/",
"keyforAzuraMobileService"
this);

// Get the Mobile Service Table instance to use
mTokutenTable = mClient.getTable(TokutenItem.class);
     } catch (MalformedURLException e) {
createAndShowDialog(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error");
       }
        // 挿入したいItem項目をclassに入れる、idの設定は不可
TokutenItem mTokutenItem = new TokutenItem("4e25173e091a817e3dd67300",2,300,3);
mTokutenTable.insert(mTokutenItem, new TableOperationCallback<TokutenItem>() {
        public void onCompleted(TokutenItem entity, 
                Exception exception, 
                ServiceFilterResponse response) {   
           if (exception == null) {
        //Log.i(TAG, "Read object with ID " + entity.id);
           } else {
        createAndShowDialog(exception, "Error");
           }
        }
});

getTableは、classの構造に合わせて、SQLの列を追加してくれます。

3) Permissionの追加を忘れず
<uses-permission android:name="android.permission.INTERNET" />