SQLiteデータベースにおけるデータの操作(追加/検索)については末尾のセクションにある記事を参照ください。
=== 目次 ===
データベースの作成~テーブルの作成
SQLiteデータベースへアクセスするためにはSQLiteOpenHelperというSQLiteアクセス用のラッパークラスを継承したクラスを作成します。SQLiteOpenHelperを継承したクラスにおいて最低限実装しなければいけないコードは以下の①superを含むコンストラクタ ②onCreateメソッド ③onUpgradeメソッド の3つです。
public class DatabaseManager extends SQLiteOpenHelper {
private final static String DATABASE_FILENAME = "sample.db";
private final static int DATABASE_VERSION = 1;
DatabaseManager(Context context) {
super(context, DATABASE_FILENAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
①superを含むコンストラクタ
DatabaseManager(Context context) {
super(context, DATABASE_FILENAME, null, DATABASE_VERSION);
}
superのそれぞれの引数の意味は以下です。
- 第1引数はContextです。superの引数に渡すために実装するclassのコンストラクタの引数にもContextを指定しておきましょう。
- 第2引数はデータベース名です。
- 第3引数はCursorオブジェクトを生成するためのFactoryオブジェクトですが、通常は使用しないためnullで大丈夫です。
- 第4引数はデータベースのバージョンです。
- newVer = oldVerのとき: インスタンスが生成されます
- newVer > oldVerのとき: onUpgradeが呼ばれます
- newVer < oldVerのとき: onDowngradeが呼ばれます
② onCreateメソッド
onCreateメソッドはSQLiteDatabaseオブジェクト生成時にデータベースが存在しなければ呼ばれます。例えば以下のコードを実行するとデータベースのファイル生成後にonCreateメソッドが呼ばれます。DatabaseManager dm = new DatabaseManager(con); //conは何かしらのContextオブジェクト
SQLiteDatabase db = dm.getWritableDatabase();
onCreateメソッドはデータベース作成直後に呼ばれるため、通常はここにテーブル作成のコードを実装します。例は以下です。
@Override
public void onCreate(SQLiteDatabase db) {
String cmd = "create table test(id integer, str text)";
db.execSQL(cmd);
}
この例ではテーブル作成のSQLiteコマンド文字列を生成後、そのコマンドを実行しています。SQLiteコマンドにおいてテーブル作成は以下です。そのため、上記のようなコードとなります。
create table テーブル名(カラム名1 変数型, カラム名2 変数型, ...)
データベースファイルの保存場所と確認方法
データベースは内部データ -> data -> data -> パッケージ名 -> database内に作成されます。データベースのファイルが生成されたかどうか?をAndroidStudioで確認するには、Device File Explorer上で上記のパスを確認します。

③ onUpgradeメソッド
onUpgradeメソッドは①にも記載した通り、super実行時にデータベースのバージョンが上がっていると呼ばれます。よって、バージョンを上げなければ特にコードを実装する必要はありません。
ここまでのサンプルコード
ここまでのサンプルコードは以下です。public class DatabaseManager extends SQLiteOpenHelper {
private final static String DATABASE_FILENAME = "sample.db";
private final static int DATABASE_VERSION = 1;
DatabaseManager(Context context) {
super(context, DATABASE_FILENAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String cmd = "create table test(id integer, str text)";
db.execSQL(cmd);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}