2013年6月3日月曜日

SQLiteにてデータの管理を行う。

Androidには軽量で高機能なデータベースソフトであるSQLiteが組み込まれており、これを利用すると、任意のデータをデータベース上に保存しておくことができます。
保存したデータベースからは、特定の条件を満たすデータのみを取り出して表示したり、データの並び順を表示する形式に合わせて好きに取り出す事が可能です。


【SQLiteの特徴】
①OracleやMySQLのようにサーバー・クライアント構成ではなく、Microsoft Accessのようにファイルを直接読み書きする為、サーバーアプリケーションを必要としない。
②データベースは単一のファイルに格納される。
③プログラミングはライブラリーに格納されたクラスを呼び出して使用する。
④ファイルを共有する事で複数のアプリケーションでデータベースインスタンスを共有することが可能。
⑤データベースファイルが2テラバイトまで使用可能
⑥PostgreSQLやMySQLに比較して、2倍程度早い実行速度で処理できる。


【SQLiteの使用方法】
SQLiteを利用したデータベースアプリケーションを作成するには
「SQLiteOpenHelper」クラス、または「SQLiteDatabase」クラスを利用します。
今回は「SQLiteOpenHelper」クラスを利用してアプリケーションを作成する事にします。

【SQLiteOpenHelperクラスの使用手順】
○データベースの作成
 (ActivityのonCreate()メソッド内で定義します)

 ・SQLiteOpenHelperクラスのオブジェクトを生成する
    →SQLiteOpenHelper()コンストラクターによってデータベースの作成、オープン
        が行われます。

 ・SQLiteOpenHelperオブジェクトに対してgetWritableDatabase()メソッドを実施する。
    →DatabaseHelperサブクラスのonCreate(),onUpgrade()メソッドが呼び出されます。

○SQLiteOpenHelperクラスを継承したDatabaseHelperサブクラスを定義する
 ・基本クラスのコンストラクターによってデータベースの作成、またはオープンを実施
   ・onCreate()メソッドによってデータベースのテーブルを作成する。
   ・onUpgrade()メソッドによってデータベースのアップグレードを実施する。

★SQLiteOpenHelperクラスを利用したソースコード例はこちら
/**
 * データベース作成クラス
 * @author n_umamoto
 *
 */
public class DatabaseHelper extends SQLiteOpenHelper {
 // データベース名を定数に登録
 private final static String DB_NAME = "DEMO.db";
 // データベースのバージョンを登録
 private final static int    DB_VERSION = 1;
 
 public DatabaseHelper(Context context) {
  super(context, DB_NAME,null,DB_VERSION);
 }

 //データベースを作成したタイミングで呼び出される。
 @Override
 public void onCreate(SQLiteDatabase db) {
  db.beginTransaction();
  try {
   SQLiteStatement stmt;
   //スケジュールテーブル作成
   db.execSQL("CREATE TABLE IF NOT EXISTS Schedule" 
      + "(Date text primary key, "
      + "ScheduleInfo text)");
   db.setTransactionSuccessful();
  } finally {
   db.endTransaction();
  }
 }
 
 /* (非 Javadoc)
  * データベースをバージョンアップしたタイミングで呼び出される。
  * @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int)
  */
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  // 古いバージョンのテーブルが存在する場合はこれを削除
  db.execSQL("DROP TABLE IF EXISTS Schedule");
        // 新規テーブルの作成
        onCreate(db);
 }
}

0 件のコメント:

コメントを投稿