2009-08-22 13 views
1

コマンドラインからsqlite3データベースを作成し、いくつかのレコードを挿入しました。私のアプリはそれらのすべてを取得し、それらをちょうどいいことを示します。私は戻って、sqlite3 cliを介していくつかのレコードを挿入し、シミュレータのドキュメントディレクトリからdbファイルを消去して、メインバンドルから再コピーされるようにして、アプリケーションを再度実行するだけで、私が挿入したオリジナルのレコード。新しいレコードは表示されません。私は、新しいdbファイルがシミュレータのドキュメントディレクトリにコピーされたことを確認しました。そして、sqlite3 cliをポイントすると、select *を実行してすべてのレコードを見ることができます。iphone sqlite3データベースを更新できません

ここで何が起こっている可能性がありますか?あたかもdbファイルの前のバージョンがどこかにキャッシュされていて、私の更新されたバージョンの代わりに使用されているかのようです。

//スコット

答えて

2

xcodeでアプリケーションを再構築して実行するたびに、iphoneシミュレータのアプリケーションフォルダの下に新しいフォルダが作成されます。あなたのsqlite dbがxcodeからインクルードされている場合、古いdbは新しいフォルダに入れられますが、あなたの編集は古いフォルダとnow unusedフォルダに入れられます。

+0

xcodeはこれらの新しいフォルダをどこに置いていますか?私はプロジェクト名/ビルド/デバッグ - iphonesimulator/projectname.appを認識しています – skantner

+1

私はそれを見つけた:/ユーザー/ユーザー名/ライブラリ/アプリケーションサポート/ iPhoneシミュレータ/ユーザー/アプリケーション/ – skantner

0
私は彼の答えを確認していない

が、Stephan Burlot said:sqliteは、要求のためにキャッシュを使用しています

。 &を閉じると、キャッシュメモリを解放する時間からデータベースが再度開きます。

(私はすべてのSQLiteのインスタンスがリクエストをキャッシュするというのは本当だとは思わないが、それはiPhoneのケースかもしれません。)

明らかにあなたは、メモリとの関係ではありませんが、それはキャッシュされている場合リクエスト、多分ちょうど近いと再オープンする必要があります。

これが当てはまらない場合、私の次の推測は、あなたのアプリケーションがあなたが指していると思っているファイルを指していないということでしょう。アプリを更新することを忘れないでください?アプリ内からdbを更新し、CLIでそれらのアップデートを確認することでこれを確認できます。あなたは、彼らが同じdbを見ていないことがわかります。

関連する問題