SQLite -> 接続

Posted by muchag | Android |
初回投稿:2011-03-30 (水) 14:03:49 | 最終更新:2011-03-31 (木) 13:34:20

様々な手法があるようだが、現在利用している手法を。

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]  

データベースヘルパー
コンストラクタ
[android]public DBHelper(Context context) {
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引数:データベースヴァージョン ・・・自ら決めてよいらしい
 

onCreate

データベースを新規生成する際に呼ばれる。
一生に1回だけ・・・かな?

多くのサンプルが、このメソッドの中にテーブル作成のコードを入れているが
どうもピンとこない。
確かにデータベース生成時に最低限のテーブルは必要なんだろうけど
「データベースの生成」と「テーブルの生成」は・・・
何ていうのかな、タイミングが違う気がして直感でわかり辛い。
 

onUpgrade

データベースのアップグレード時(ヴァージョンを変更した時)に呼ばれる。

まだ試していないので、そのうち書き換える。

Posted by muchag | Android |
初回投稿:2011-03-30 (水) 14:03:49 | 最終更新:2011-03-31 (木) 13:34:20

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment