SQLite -> 接続
Android にて SQLite を利用するためには
SQLiteOpenHelper クラスを継承したヘルパーを実装する必要がある。
Android Developers:SQLiteOpenHelper
[android]import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseTest extends Activity {
private final static String DB_NAME = “hoge.db”;//DB名
private final static String DB_TABLE = “koge”; //テーブル名
private final static int DB_VERSION = 1; //バージョン
private SQLiteDatabase db; //データベースオブジェクト
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//データベースオブジェクト の生成
DBHelper dbHelper = new DBHelper(this);
db = dbHelper.getWritableDatabase();
//*** 処理 ***
//データベースオブジェクト の開放
db.close();
}
//データベースヘルパーの定義
private static class DBHelper extends SQLiteOpenHelper {
//データベースヘルパーのコンストラクタ
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
//データベースの生成
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(
“create table if not exists ”
+ DB_TABLE
+ “(”
+ “_id INTEGER PRIMARY KEY AUTOINCREMENT,”
+ “name TEXT”
+ “)”
);
}
//データベースのアップグレード
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“drop table if exists ” + DB_TABLE);
onCreate(db);
}
}
}[/android]
super(context, DB_NAME, null, DB_VERSION);
}[/android]
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
Android Developers:SQLiteOpenHelper
第1引数:Context ・・・これが曲者・・・。調べてみたけどやっぱりよくわからない。
慣れてくれば少しはわかると思うので、しばし放置。
さりながら疑問点をメモ。
◆Activity クラス直下(Activity クラス内)で this 用いれば当該アクティビティを取得してくれるらしいのだが
あれこれサイトを見ると、getApplicationContext() というメソッドを使うとよい、と書いてある。
違いはそのうちわかる・・・はず。
第2引数:データベース名
第3引数:SQLiteDatabase.CursorFactory ・・・意味不明
第4引数:データベースヴァージョン ・・・自ら決めてよいらしい
データベースを新規生成する際に呼ばれる。
一生に1回だけ・・・かな?
多くのサンプルが、このメソッドの中にテーブル作成のコードを入れているが
どうもピンとこない。
確かにデータベース生成時に最低限のテーブルは必要なんだろうけど
「データベースの生成」と「テーブルの生成」は・・・
何ていうのかな、タイミングが違う気がして直感でわかり辛い。
データベースのアップグレード時(ヴァージョンを変更した時)に呼ばれる。
まだ試していないので、そのうち書き換える。