Tasaki です。
いよいよ SQLite 編も最終回となりました。
最後はデータの削除とアプリケーション終了時の後処理についてです。
ただ、
4回目のエントリで既に個別のデータの消去については紹介済みですので、今回は全てのデータを消去する場合を考えます。
これはすごく単純でして、全てのデータの読み込みとデータの消去の方法が分かっていれば、簡単に思いつくでしょう。
実装例を以下に示します。このメソッドは、データベースへのポインタ database とデータベース内のデータから作成した Person オブジェクトの配列 dataArray を管理するクラスで定義することを想定しています。
// 全ての位置情報をテーブルから削除
- ( void ) deleteAllData {
static char *sqlString = "DELETE FROM person";
sqlite3_stmt *statement = NULL;
if( database != NULL ) {
if( sqlite3_prepare_v2( database, sqlString, -1, &statement, NULL ) == SQLITE_OK ) {
while( sqlite3_step( statement ) == SQLITE_ROW );
}
sqlite3_finalize( statement );
}
}
上の例ではエラー処理を怠けてしまっていますが、削除できたデータと同じものだけをメモリに展開中の配列から抹消することが、望ましいのではないでしょうか。
次に後処理に関してですが、最低でも以下の処理は必要になります。
これも前述のクラスで定義しておくべきメソッドです。
- ( void ) closeDatabase {
if( database == NULL ) {
return;
}
if( sqlite3_close( database ) != SQLITE_OK ) {
NSLog( @"Failed to close database with '%s'.", sqlite3_errmsg( database ));
}
}
これで、開始から終了までに最低限必要となる機能をご紹介できました。
慣れるまではいろいろ面倒に感じますが、ある程度仕組みが分かってしまえば、応用はそう難しくないのではないでしょうか。
まあ、3.0 で追加された Core Data を使えば、もっと楽なのは間違いないでしょうけど。
Core Data についてのエントリもありますので、
こちらからどうぞ。
- 関連記事
-
スポンサーサイト
trackbackURL:http://appteam.blog114.fc2.com/tb.php/81-124d720f