今回は、
前回のおさらい
前回は、
具体的には、
- Androidのレイアウトシステム
- リストビューの使い方
の説明をしました。
物足りないと感じた方は、
SQLiteとは?
今回は、
SQLiteをご存じではない方のために、
SQLiteで扱えるデータ型は、
INTEGER | 符号付整数 |
REAL | 浮動小数点 |
TEXT | テキスト |
BLOB | バイナリデータ |
NULL | NULL |
一般的なデータベースでは、
それでは、
今回も例として上げているコードは、

ヘルパークラスの実装
SQLiteOpenHelperというヘルパークラスを継承してDBOpenHelperクラスを作成します。
SQLiteOpenHelperクラスのコンストラクタには、
public DBOpenHelper( Context context )
{
super( context, DB_NAME, null, DB_VERSION );
}
テーブルの作成
まずは、
SQLiteOpenHelperクラスは、
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(
"CREATE TABLE IF NOT EXISTS Test ( _id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , caption TEXT )"
);
}
アップグレード処理
SQLiteOpenHelperクラスには、
SQLiteOpenHelperクラスのオブジェクトが生成されると、
たとえば、
public DBOpenHelper( Context context )
{
// バージョンを 2 にする
super( context, DB_NAME, null, 2 );
}
スーパークラスのコンストラクタの第三引数は、
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if( oldVersion == 1 )
{
// アップグレードコード
db.execSQL( "ALTER TABLE Test add add_text TEXT" );
}
}
バージョンが1から2に変更されたので、
onUpgradeメソッドの第二引数には、
onUpgradeメソッドは、
先でご説明したように、
レコードの追加
テーブルへのレコード追加は、
public void add( String caption ) {
ContentValues val = new ContentValues();
val.put( "caption", caption );
m_db.insert( TBL_NAME, null, val );
}
レコードの追加には、
ContentValuesクラスは、
m_
レコードの更新
レコードの更新は、
public void update( int id, String caption ) {
ContentValues val = new ContentValues();
val.put( "caption", caption );
m_db.update( TBL_NAME, val, "_id=?", new String[] { Integer.toString( id ) });
}
追加と同様に、
SQLiteDatabaseクラスのupdateメソッドでレコードの更新を行います。
updateメソッドは、
レコードの読み出し
レコードの読み出しは、
public String[] loadAll()
{
int i;
Cursor c;
String[] entries;
if( m_db == null )
return null;
c = m_db.query( TBL_NAME,
new String[] { "_id", "caption" },
null, null, null, null, null );
int numRows = c.getCount();
c.moveToFirst();
entries = new String[numRows];
for( i = 0; i < numRows; i++ )
{
entries[i] = c.getString(1);
c.moveToNext();
}
c.close();
return entries;
}
まずは、
今回は、
queryメソッドの実行が成功すると、
後は、
forループの中では、
getStringの第一引数に指定する値は、
これは0から始まります。
パフォーマンスチューンと利用の注意点
SQLiteは、
組み込み向けと言っても、
- 読み込むフィールド数は、
出来る限り少なくする - レコードは、
まとめて読み込み、 まとめて表示する - 読み込みレコード数が分かっている場合は、
query実行時にlimitを設定する
Android OSに搭載されているSQLiteは、
まとめ
今回は、
- テーブルの作成
- アップグレード処理
- レコードの追加
- レコードの更新
- レコードの読み出し
多くのアプリがSQLiteを使ってレコード読み込み・