Android開発ノート(31)SQLiteのランドマークとデータ構造


ConttentValues ContentValuesはマッピングのようなもので、キーパッドのペアを記憶するためにも使われます.違いはContentValuesのキーは文字列だけで、ContentValuesのソースコードを調べてみると、その内部のキーの値が正しいデータ構造がHashMapであることが分かります.「prvate HashMapmValues」.また、ContentValuesがPacerbaleインターフェースを実現したのも携帯電話の処理効率を高めるためです.
ここでContentValuesと言えば、やはりAndroidのソースコードはSQLiteを操作する時にこのデータ構造だけを認識しています.他のjava容器類を認識しないので、追加的にそれを理解しなければなりません.幸い、ContentValuesの使い方は簡単です.主に操作putの保存と操作getの読み取りです.putおよびget方法は、整数、浮動小数、文字列、ブールタイプ、バイトなどの一般的な基本データタイプをサポートしています.
SQLiteは挿入、更新、クエリ操作においてContentValuesデータを使用する必要があります.以下は挿入と更新のコード例です.
	private static final String TABLE_NAME = "person";
	public int delete(String condition) {
		int count = mDB.delete(TABLE_NAME, condition, null);
		return count;
	}
	
	public boolean insert(ArrayList<Person> personArray) {
		for (int i = 0; i < personArray.size(); i++) {
			// ContentValues  
			ContentValues cv = new ContentValues();
			cv.put("name", personArray.get(i).name);
			cv.put("age", personArray.get(i).age);
			cv.put("height", personArray.get(i).height);
			cv.put("weight", personArray.get(i).weight);
			cv.put("company", personArray.get(i).company);
			long result = mDB.insert(TABLE_NAME, "", cv);
			//          ,     -1
			if (result == -1) {
				return false;
			}
		}
		return true;
	}


	public int update(Person person, String condition) {
		ContentValues cv = new ContentValues();
		cv.put("name", person.name);
		cv.put("age", person.age);
		cv.put("height", person.height);
		cv.put("weight", person.weight);
		cv.put("company", person.company);
		int count = mDB.update(TABLE_NAME, cv, condition, null);
		return count;
	}
Curser Cursorは、現在のクエリー操作を示すためのプロバイダーであり、AndroidではSQLiteを検索するために一般的に使用され、ContentProviderを調べるためにも使用され、DownloadManagerではダウンロードジョブを照会するためにも使用されます.Cursorの一般的な使い方は以下の通りです.
コントロールクラス
close:遊覧標識を閉じる
isClosed:ラベルが閉まっているかどうかを判断します.
isfirst:遊覧標識が先頭にあるかどうかを判断します.
isLast:ビーコンが最後かどうかを判断します.
クラスを移動
moveToFirst:先頭に移動
moveToLast:最後まで移動
moveToNext:次へ移動
moveToProvious:前に移動します.
move:後ろに移動します.若干のオフセットがあります.
moveToPosition:指定された場所に移動
値クラス
get Count:記録数を取得する
get Int:現在の記録の整数値を取得します.
get Float:現在記録されている浮動小数点の値を取得します.
get String:現在のレコードの文字列値を取得します.
getType:現在のレコードのフィールドタイプを取得します.
以下は、ラベルを使ってクエリーを行うコードの例です.
	public ArrayList<Person> query(String sql) {
		ArrayList<Person> personArray = new ArrayList<Person>();
		Cursor cursor = mDB.rawQuery(sql, null);
		if (cursor.moveToFirst()) {
			for (;; cursor.moveToNext()) {
				Person person = new Person();
				person.xuhao = cursor.getInt(0);
				person.name = cursor.getString(1);
				person.age = cursor.getInt(2);
				person.height = cursor.getFloat(3);
				person.weight = cursor.getDouble(4);
				person.company = cursor.getLong(5);
				personArray.add(person);
				if (cursor.isLast() == true) {
					break;
				}
			}
		}
		cursor.close();
		return personArray;
	}
この点はAndroid開発ノートの完全カタログを見ます.