SQLite -> 接続

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

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

Android にて SQLite を利用するためには
SQLiteOpenHelper クラスを継承したヘルパーを実装する必要がある。
Android Developers:SQLiteOpenHelper
 

  1. import android.content.Context;
  2. import android.database.sqlite.SQLiteDatabase;
  3. import android.database.sqlite.SQLiteOpenHelper;
  4.  
  5. public class DatabaseTest extends Activity {
  6.  
  7.     private final static String DB_NAME = "hoge.db";//DB名
  8.     private final static String DB_TABLE = "koge";   //テーブル名
  9.     private final static int    DB_VERSION = 1;      //バージョン
  10.     private SQLiteDatabase db;      //データベースオブジェクト
  11.    
  12.     @Override
  13.     public void onCreate(Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.  
  16.         //データベースオブジェクト の生成
  17.         DBHelper dbHelper = new DBHelper(this);
  18.         db = dbHelper.getWritableDatabase();
  19.  
  20.         //*** 処理 ***
  21.  
  22.         //データベースオブジェクト の開放
  23.         db.close();
  24.     }
  25.  
  26.     //データベースヘルパーの定義
  27.     private static class DBHelper extends SQLiteOpenHelper {
  28.         //データベースヘルパーのコンストラクタ
  29.         public DBHelper(Context context) {
  30.             super(context, DB_NAME, null, DB_VERSION);
  31.         }
  32.        
  33.         //データベースの生成
  34.         @Override
  35.         public void onCreate(SQLiteDatabase db) {
  36.             db.execSQL(
  37.                     "create table if not exists "
  38.                         + DB_TABLE
  39.                             + "("
  40.                             + "_id INTEGER PRIMARY KEY AUTOINCREMENT,"
  41.                             + "name TEXT"
  42.                             + ")"
  43.                         );
  44.  
  45.         }
  46.  
  47.         //データベースのアップグレード
  48.         @Override
  49.         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  50.             db.execSQL("drop table if exists " + DB_TABLE);
  51.             onCreate(db);
  52.         }
  53.     }
  54. }

 

データベースヘルパー
コンストラクタ
  1. public DBHelper(Context context) {
  2.     super(context, DB_NAME, null, DB_VERSION);
  3. }

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