Android開発ノート(31)SQLiteのランドマークとデータ構造
3118 ワード
ConttentValues ContentValuesはマッピングのようなもので、キーパッドのペアを記憶するためにも使われます.違いはContentValuesのキーは文字列だけで、ContentValuesのソースコードを調べてみると、その内部のキーの値が正しいデータ構造がHashMapであることが分かります.「prvate HashMapmValues」.また、ContentValuesがPacerbaleインターフェースを実現したのも携帯電話の処理効率を高めるためです.
ここでContentValuesと言えば、やはりAndroidのソースコードはSQLiteを操作する時にこのデータ構造だけを認識しています.他のjava容器類を認識しないので、追加的にそれを理解しなければなりません.幸い、ContentValuesの使い方は簡単です.主に操作putの保存と操作getの読み取りです.putおよびget方法は、整数、浮動小数、文字列、ブールタイプ、バイトなどの一般的な基本データタイプをサポートしています.
SQLiteは挿入、更新、クエリ操作においてContentValuesデータを使用する必要があります.以下は挿入と更新のコード例です.
コントロールクラス
close:遊覧標識を閉じる
isClosed:ラベルが閉まっているかどうかを判断します.
isfirst:遊覧標識が先頭にあるかどうかを判断します.
isLast:ビーコンが最後かどうかを判断します.
クラスを移動
moveToFirst:先頭に移動
moveToLast:最後まで移動
moveToNext:次へ移動
moveToProvious:前に移動します.
move:後ろに移動します.若干のオフセットがあります.
moveToPosition:指定された場所に移動
値クラス
get Count:記録数を取得する
get Int:現在の記録の整数値を取得します.
get Float:現在記録されている浮動小数点の値を取得します.
get String:現在のレコードの文字列値を取得します.
getType:現在のレコードのフィールドタイプを取得します.
以下は、ラベルを使ってクエリーを行うコードの例です.
ここで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開発ノートの完全カタログを見ます.