SQLiteデータベースの使用方法(2/3): データの操作(追加~検索) | Androidアプリ開発

この記事ではAndoridアプリ開発におけるSQLiteデータベースの追加や検索といったデータ操作方法について記載しています。

それ以前のデータベース作成~テーブル作成については以下の記事を参照ください。
■サンプルに使用するテーブル
サンプルコードには以下のSQLiteコマンドで生成したテーブルを使用します。
create table test(id integer, str text)
スポンサーリンク

データを追加する

データを追加するには以下のサンプルコードのように、ContentValuesオブジェクトに各カラムに対応する値を代入後、insertメソッドを使用してデータベースにデータを追加します。
DatabaseManager dm = new DatabaseManager(this); //DatabaseManagerは前回作成したclass
SQLiteDatabase db = dm.getWritableDatabase();

ContentValues cv = new ContentValues();
cv.put("id", 1); //カラムidに1を代入
cv.put("str", "text"); //カラムstrに"text"を代入
db.insert("test", null, cv);
insertメソッドの引数は以下の通りです。
  • 第1引数はテーブル名です。
  • 第2引数はnullColumnHackと呼ばれる引数で、カラムにNOT NULL制約が課されている&挿入するデータのそのカラムの値が空の場合にこの引数の値が代入されます。今の例ではNOT NULL制約を課していないのでnullで大丈夫です。
  • 第3引数は挿入するデータ(ContentValuesオブジェクト)です。

追加したデータを確認するには?

追加したデータを確認するにはAndroid Studio上のDevice File Explorer(※)でデータベースをPC上に保存後、DB Browser for SQLiteなどのソフトを用いて確認します。
(※)データベースの保存場所は内部データ -> data -> data -> パッケージ名 -> databaseです。
スポンサーリンク

データを更新する

データと更新するためにはupdateメソッドを使用します。
以下はid=1のデータのstrカラムの値を更新する例です。
DatabaseManager dm = new DatabaseManager(this); //DatabaseManagerは前回作成したclass
SQLiteDatabase db = dm.getWritableDatabase();

ContentValues cv = new ContentValues();
cv.put("str", "NewText");
db.update("test", cv, "id = ?", new String[] {"1"});
updateメソッドの引数は以下の通りです。
  • 第1引数はテーブル名です。
  • 第2引数は更新後の値(ContentValuesオブジェクト)です。
  • 第3引数はWHERE句と呼ばれるデータを特定するためのSQLite文です。詳細はこちらのサイトが参考になります。
  • 第4引数はWHERE句で?に代入する値です。
第4引数は必ず使用する必要はなく、上記の例は以下のように書き換えることもできます。
db.update("test", cv, "id = 1", null);
スポンサーリンク

データを削除する

データを削除するにはdeleteメソッドを使用します。
以下はid=1のデータを削除する例です。
DatabaseManager dm = new DatabaseManager(this); //DatabaseManagerは前回作成したclass
SQLiteDatabase db = dm.getWritableDatabase();

db.delete("test", "id = 1", null);
deleteメソッドの引数は以下の通りです。
  • 第1引数はテーブル名です。
  • 第2引数はWHERE句です。
  • 第3引数はWHERE句で?を使用している場合に代入する値です。
スポンサーリンク

データを検索する

データを検索するためにはqueryメソッドを使用します。
以下はstrカラムの値がhelloであるidを取得する例です。
DatabaseManager dm = new DatabaseManager(this); //DatabaseManagerは前回作成したclass
SQLiteDatabase db = dm.getWritableDatabase();

ArrayList<Integer> IdList = new ArrayList<>();

Cursor c = db.query("test", null, "str = hello", null, null, null, "id");
c.moveToFirst();
for(int i=0; i<c.getCount(); i++) {
    int id = c.getInt(0); //getInt引数はカラムのインデックスを指定する。
    IdList.add(id);
    c.moveToNext();
}
queryメソッドの引数は以下の通りです。
  • 第1引数はテーブル名です。
  • 第2引数は結果に出力するカラムです。nullを指定すると全てのカラムがCursorに含まれます。特に理由がなければnullで良いでしょう。
  • 第3引数はWHERE句です。
  • 第4引数は WHERE句で?を使用している場合に代入する値です。
  • 第5引数はGROUP_BY句と呼ばれるものです。あらかじめデータをグループ化している場合に使用できますが、今回の例ではグループ化はしていないためnullで良いです。
  • 第6引数はHAVING句と呼ばれるものです。こちらのグループ化している場合にカラムなどを指定する場合に使用しますが、今回の例ではグループ化していないためnullで良い
  • 第7引数はソートに使用するカラム名を指定します。
また、Cursorオブジェクトから値を得るにはgetInt等のメソッドを使用します。
注意点としてはgetInt等のメソッドの引数はカラムのインデックスです。
今回、得たいIdカラムのインデックスは0のため、例では0を引数にしています。
スポンサーリンク

サンプルコードのまとめとオススメの使用方法

サンプルコードのまとめとオススメの使用方法については以下の記事にまとめています。
Androidアプリ開発
スポンサーリンク
Androidアプリ開発 記事一覧
Androidアプリ開発 記事一覧
Androidアプリ開発の記事一覧を以下にまとめています。
良かったらご覧ください。

Androidアプリ開発 記事一覧
カテゴリ広告: Androidアプリ開発
スポンサーリンク: Androidアプリ開発を個人レッスンで学ぶなら...?
Androidアプリ開発は一人で学んでいても限界があります。
そこでオススメなのがオンラインでAndroidアプリ開発を学べる「コードキャンプ」。
個人レッスンで丁寧に教えてくれます。

無料レッスン体験も可能なので、まずは無料体験から試してみてはいかがでしょうか?

Androidアプリ開発個人レッスン
一般広告: モバイルバッテリー
スポンサーリンク
Aresei-note
タイトルとURLをコピーしました