sqlite

iPhoneでSQLite3を使う12(INSERT OR REPLACE文)

SQLiteでテーブルにデータを追加する際、あれば更新なければ追加ということがしたかったので 1.あるかどうかのチェックをSELECT文 2-1.あればUPDATE文 2-2.なければINSERT文 という形で実装していたのですが、なければSELECT→INSERT、あればDELETE→INSERTと…

iPhoneでSQLite3を使う11(DBテーブルからUITableViewを表示)

DBテーブルからのUITableViewに表示する際に、データ数が多い場合に全部読み取るとメモリ消費も大きくなりますし、データに対して処理をする場合は時間もたくさんかかってしまいます。そのため、一度に読む量を区切り順番にページ送りして表示するようにペー…

iPhoneでSQLite3を使う10(iPhoneアプリリリース後のテーブルの構造変更)

iPhoneアプリをリリース後に、機能追加でテーブルの構造を変更する必要が生じました。sqlite3のDBファイルは、初回のアプリインストール時に作成されて、アプリをバージョンアップした際でも上書きされません。 ※アンインストールすると、DBファイルも消えま…

iPhoneでSQLite3を使う9(制約)

今回は、制約です。だんだん、iPhoneから遠ざかってる気がしてきましたがw 制約とはテーブルという器に、入れる値にルールをつける機能です。この列にはこんな値しか許さないというルールをつけることができます。 今回は次の4点を紹介しておきます。 NOT N…

iPhoneでSQLite3を使う8(インデックス)

テーブルにインデックスをつけましょう。 インデックスとは、本で言うところの目次です。特定の情報を探すときに、本のページを全部読むより、目次だけを読む方が早く読めますよね。それと同じでテーブルにデータを入れた時に、インデックスを作成することで…

iPhoneでSQLite3を使う7(サンプルソース)

SQLite3の過去の記載に間違いがちらほら、気づいたところは直しました。まだ間違いがあるかもしれませんので、サンプルソースを確認していただいた方が確実です。また、テーブルの構造を変更しましたのでご注意ください。 サンプルは、Testボタンのみw ボタ…

iPhoneでSQLite3を使う6(DBのエラー処理)

今回はDBのエラー処理を実装していきます。エラー処理を放置していましたので作りこんで行きます。 基本方針として、メソッド毎に戻り値を見てエラー処理をするのは面倒なので、try catchを使ってエラーをさばいていくことにします。 try catchを使えば、try…

iPhoneでSQLite3を使う5(データの追加と更新)

今回は、追加と更新についてです。SQLではINSERT文とUPDATE文を使います。 INSERT文の例 INSERT文では、どのテーブルにどんな値を追加したいかを記述します。列の個数と列の順番にあわせて値を記述します。 INSERT INTO テーブル名 VALUES (値, 値, 値, 値…)…

iPhoneでSQLite3を使う4(データの削除とバインド変数)

今回は、削除についてです。SQLではDELETE文を使います。 DELETE文の例 DELETE文では、どのテーブルを削除したいかを記述します。また、削除するときにこんなデータだけ削除するという、条件をつけることもできます。 DELETE FROM TABLE名 WHERE 条件例えば…

iPhoneでSQLite3を使う3(データの選択)

SQLite3の3回目、基本的なデータ操作について書きます。 1回目で書いた通り、データの操作はSQLで行います。SQLのDML文(データ操作言語)には、4つの種類があります。 SELECT(選択) INSERT(追加) UPDATE(更新) DELETE(削除) 名は体を表す。見たまんまです。 …

iPhoneでSQLite3を使う2(DBファイルのオープンとトランザクションとは)

前回、twitterDB.sqliteというDBファイルを作成するところまでやりました。今回は、プログラムからテーブルを使える状態にする準備部分の実装をやります。 まず、前回作った「twitterDB.sqlite」を、xcodeプロジェクトに追加してください。 それと、#import …

iPhoneでSQLite3を使う1(SQLite起動とファイルの作成)

なぜいまさら、SQLiteなのか。それはCore Dataに挫折したからです。私がOracleとかSQL Serverに慣れ親しんでいるからというのもあるのですが、Core Data使いにくい。DB(データベース)を使ったことがない人はSQLが障壁になるのかもしれませんが、より複雑な…