Kii Cloudでさくっとデータベースを使用したAndroidアプリを作ろう。 データを扱う編

さてユーザーのサインアップ>ログインまで実装しちゃったので
今度は実際にそのユーザーに紐付けたデータをKii Cloudにあずけて見ましょう。

その前に前回のログインの中で

KiiUser user = KiiUser.logIn(username,password);
string id = user.toURI();

.toURI()を使うとユーザーの一意のIDが取れるので
このへんの必要になりそうなものはちゃんとログイン時に別で持っておきましょう。

あと必要に応じて Kii.initialize も忘れずに。

*追記

下記のコードの中で出てくる

Kii.bucket("任意の文字列").object();

はログインしていれば全てのユーザーから閲覧できるとのことで

各ユーザが自身のデータしか参照しないようなものであれば

KiiUser.getCurrentUser().bucket("任意の文字列")

を使用してください

他にもグループ(特定のユーザー)だけが特定の権限を持った処理を行える
といったこともできるようなので公式リファレンスの
「Bucket の ACL 設定」を確認しておくとよさそうです、

データを保存する


	//データ保存用のオブジェクト作成 任意の文字列はテーブル名みたいなものかな
	KiiObject object = Kii.bucket("任意の文字列").object();

	//.set("カラム名", "データ") という形で渡す
	object.set("data1", "TEST_A");
	object.set("data2", "TEST_B");
	// Save the object
	try {
		object.save();
	} catch (IOException e) {
		// Handle error
	} catch (AppException e) {
		// Handle error
	}


データを参照する


List<KiiObject> objLists = null;

	try {

		KiiBucket bucket = Kii.bucket("任意の文字列");

		//今回は名前で検索(Select)
		KiiQuery query = new KiiQuery(KiiClause.and(KiiClause.equals(
		"username", "検索したい文字列")));

		// データ(object)が作成された時間でソート
		query.sortByDesc("_created");

		KiiQueryResult<KiiObject> result = bucket.query(query);
		objLists = result.getResult();

	} catch (IOException e) {
		// handle error
	} catch (AppException e) {
		// handle error
	}


//実際に取得したデータはfor文等でぶん回してtoURI()してあげると各データ一意のURIを取得できる。
//データを更新する際や削除する際に必要になるのでちゃんと別途保存しておこう。
for (KiiObject obj : objList){
	//URIを取得
	URI uri = obj.toURI();
}


実際には通信は別スレッドで受け取ったデータはUIに反映させるだろうから
もう少し長くなるけど基本的にはこれだけ。

データを更新する


	//上の「データを参照する」で拾ったobjectには各データ固有のURIをtoURI();で
	Uri objUri = Uri.parse("参照したデータから取得したURI");

	//objectに更新したいデータをURIを渡して指定する
	KiiObject object = KiiObject.createByUri(objUri);
	
	//更新も作成と大体同じ。当然カラム名が一致してないと更新できない
	object.set("data1", "TEST_C");
	object.set("data2", "TEST_D");

	// Save the object
	try {
		object.saveAllFields(true);
	} catch (IOException e) {
		// Handle error
		str = e.getMessage();
	} catch (AppException e) {
		// Handle error
		str = e.getMessage();
	}

データを削除する


	Uri objUri = Uri.parse("削除したいデータのURI");
	KiiObject object = KiiObject.createByUri(objUri);

	try {
		object.delete();
	} catch (AppException e) {
		// handle error
	} catch (IOException e) {
		// handle error
	}

またもこれだけ。たったこれだけで
SQLのSelect Insert Update Deleteが出来てしまう。

なんて楽なんだ…

About the author