ともちゃんのアプリ開発日記

組込みC言語プログラマだったともちゃんが、四苦八苦しながら、AndroidのJAVA/Kotlin、iOSのSwiftUIを習得して行きます。ともちゃんの備忘録も兼ねています。

SQLiteの使い方:query

final String columns = new String{“_id”,”bookmark”};
String where = “bookmark like ?”;
String param = “%android%”;
Cursor c =
   sdb.query(“bookmarklist”,columns,where,new String[]{param},null,null,”_id desc”,”10″); 

 

SQLiteDatabase.query()メソッドの第一引数はテーブル名です。
第二引数は、取得する列名(カラム名、フィールド名)の配列を指定します。
第三引数、第四引数は取得するレコードの条件を指定します。
今回は、bookmark列の文字列に、「android」という文言が含まれる文字列、という条件にしています。
第五引数は、group by句を指定します。
第六引数は、Having句を指定します。
第七引数は、order by句を指定します。
第八引数は、limit句(取得するレコードの上限数)を指定します。
使わない場合は、nullを指定します。

今回の処理をSQL文で表現すると、以下のようになります。

select _id,bookmark from bookmarklist where bookmark like ‘%android%’ order by _id desc limit 10

私のテスト実装は、下記です。

Cursor cursor = mydb.query("mytable", new String[] {"_id", "date", "weight", "body_fat_percentage"}, null, null, null, null,"date ASC", "2");

 

 Cursorの実装は、下記です。

    if(cursor.moveToFirst()){
do{
long id = cursor.getLong(cursor.getColumnIndex("_id"));
String Register_date = cursor.getString(cursor.getColumnIndex("date"));
float Weight = cursor.getFloat(cursor.getColumnIndex("weight"));
float BodyFatPercentage = cursor.getFloat(cursor.getColumnIndex("body_fat_percentage"));
(中略)
}while(cursor.moveToNext());
}